helix.fhir.client.sdk 4.2.3__py3-none-any.whl → 4.2.18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. helix_fhir_client_sdk/fhir_auth_mixin.py +17 -10
  2. helix_fhir_client_sdk/fhir_client.py +152 -79
  3. helix_fhir_client_sdk/fhir_delete_mixin.py +62 -48
  4. helix_fhir_client_sdk/fhir_merge_mixin.py +188 -166
  5. helix_fhir_client_sdk/fhir_merge_resources_mixin.py +200 -15
  6. helix_fhir_client_sdk/fhir_patch_mixin.py +97 -84
  7. helix_fhir_client_sdk/fhir_update_mixin.py +71 -57
  8. helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py +0 -24
  9. helix_fhir_client_sdk/open_telemetry/__init__.py +0 -0
  10. helix_fhir_client_sdk/open_telemetry/attribute_names.py +7 -0
  11. helix_fhir_client_sdk/open_telemetry/span_names.py +12 -0
  12. helix_fhir_client_sdk/queue/request_queue_mixin.py +17 -12
  13. helix_fhir_client_sdk/responses/fhir_client_protocol.py +10 -6
  14. helix_fhir_client_sdk/responses/fhir_get_response.py +1 -1
  15. helix_fhir_client_sdk/responses/fhir_response_processor.py +73 -54
  16. helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py +1 -1
  17. helix_fhir_client_sdk/responses/get/fhir_get_error_response.py +0 -1
  18. helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py +1 -1
  19. helix_fhir_client_sdk/responses/get/fhir_get_list_response.py +1 -1
  20. helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py +0 -1
  21. helix_fhir_client_sdk/responses/get/fhir_get_single_response.py +1 -1
  22. helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py +30 -0
  23. helix_fhir_client_sdk/utilities/cache/request_cache.py +32 -43
  24. helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py +185 -154
  25. helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py +2 -1
  26. helix_fhir_client_sdk/validators/async_fhir_validator.py +3 -0
  27. helix_fhir_client_sdk-4.2.18.dist-info/METADATA +200 -0
  28. {helix_fhir_client_sdk-4.2.3.dist-info → helix_fhir_client_sdk-4.2.18.dist-info}/RECORD +35 -28
  29. tests/async/test_benchmark_compress.py +448 -0
  30. tests/async/test_benchmark_merge.py +506 -0
  31. tests/async/test_retryable_client_session_management.py +159 -0
  32. tests/test_fhir_client_clone.py +155 -0
  33. helix_fhir_client_sdk-4.2.3.dist-info/METADATA +0 -115
  34. {helix_fhir_client_sdk-4.2.3.dist-info → helix_fhir_client_sdk-4.2.18.dist-info}/WHEEL +0 -0
  35. {helix_fhir_client_sdk-4.2.3.dist-info → helix_fhir_client_sdk-4.2.18.dist-info}/licenses/LICENSE +0 -0
  36. {helix_fhir_client_sdk-4.2.3.dist-info → helix_fhir_client_sdk-4.2.18.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: helix.fhir.client.sdk
3
+ Version: 4.2.18
4
+ Summary: helix.fhir.client.sdk
5
+ Home-page: https://github.com/icanbwell/helix.fhir.client.sdk
6
+ Author: Imran Qureshi
7
+ Author-email: imran@icanbwell.com
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: furl
16
+ Requires-Dist: requests
17
+ Requires-Dist: urllib3
18
+ Requires-Dist: chardet
19
+ Requires-Dist: aiohttp
20
+ Requires-Dist: async-timeout>=4.0.3
21
+ Requires-Dist: python-dateutil
22
+ Requires-Dist: compressedfhir<3,>=1.0.13
23
+ Requires-Dist: certifi>=2025.1.31
24
+ Requires-Dist: opentelemetry-api>=1.39
25
+ Requires-Dist: multidict>=6
26
+ Dynamic: author
27
+ Dynamic: author-email
28
+ Dynamic: classifier
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: home-page
32
+ Dynamic: license-file
33
+ Dynamic: requires-dist
34
+ Dynamic: requires-python
35
+ Dynamic: summary
36
+
37
+ # helix.fhir.client.sdk
38
+
39
+ <p align="left">
40
+ <a href="https://github.com/icanbwell/helix.fhir.client.sdk/actions">
41
+ <img src="https://github.com/icanbwell/helix.fhir.client.sdk/workflows/Build%20and%20Test/badge.svg"
42
+ alt="Continuous Integration">
43
+ </a>
44
+ <a href="https://github.com/icanbwell/helix.fhir.client.sdk/releases/latest">
45
+ <img src="https://img.shields.io/github/v/release/icanbwell/helix.fhir.client.sdk?display_name=tag"
46
+ alt="Latest Release">
47
+ </a>
48
+ <a href="https://github.com/icanbwell/helix.fhir.client.sdk/blob/main/LICENSE">
49
+ <img src="https://img.shields.io/badge/license-Apache%202-blue"
50
+ alt="GitHub license">
51
+ </a>
52
+ </p>
53
+
54
+ Fluent API to call the FHIR server that handles:
55
+
56
+ 1. Authentication to FHIR server
57
+ 2. Renewing access token when they expire
58
+ 3. Retry when there are transient errors
59
+ 4. Un-bundling the resources received from FHIR server
60
+ 5. Paging
61
+ 6. Streaming
62
+ 7. Logging
63
+ 8. Simulating a $graph call when the server does not support it
64
+
65
+
66
+ # Usage
67
+ `pip install helix.fhir.client.sdk`
68
+
69
+ # Documentation
70
+ https://icanbwell.github.io/helix.fhir.client.sdk/
71
+
72
+ # Test Project using this
73
+ https://github.com/icanbwell/fhir-server-performance
74
+
75
+ # Python Version Support
76
+ * 1.x supports python 3.7+
77
+ * 2.x supports python 3.10+
78
+ * 3.x supports python 3.12+
79
+
80
+ # Asynchronous Support
81
+ When communicating with FHIR servers, a lot of time is spent waiting for the server to respond.
82
+ This is a good use case for using asynchronous programming.
83
+ This SDK supports asynchronous programming using the `async` and `await` keywords.
84
+
85
+ The return types are Python AsyncGenerators. Python makes it very easy to work with AsyncGenerators.
86
+
87
+ For example, if the SDK provides a function like this:
88
+ ```python
89
+
90
+ async def get_resources(self) -> AsyncGenerator[FhirGetResponse, None]:
91
+ ...
92
+ ```
93
+
94
+ You can iterate over the results as they become available:
95
+ ```python
96
+ response: Optional[FhirGetResponse]
97
+ async for response in client.get_resources():
98
+ print(response.resource)
99
+ ```
100
+
101
+ Or you can get a list of responses (which will return AFTER all the responses are received:
102
+ ```python
103
+
104
+ responses: List[FhirGetResponse] = [response async for response in client.get_resources()]
105
+ ```
106
+
107
+ Or you can aggregate the responses into one response (which will return AFTER all the responses are received:
108
+ ```python
109
+
110
+ response: Optional[FhirGetResponse] = await FhirGetResponse.from_async_generator(client.get_resources())
111
+ ```
112
+
113
+ # Data Streaming
114
+ 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 is received.
115
+ The data will be streamed in AsyncGenerators as described above.
116
+
117
+ # Persistent Sessions (Connection Reuse)
118
+ By default, the SDK creates a new HTTP session for each request. For better performance (~4× faster),
119
+ you can use persistent sessions to reuse connections across multiple requests.
120
+
121
+ **Important**: When you provide a custom session factory using `use_http_session()`, YOU are responsible
122
+ for managing the session lifecycle, including closing it when done. The SDK will NOT automatically close
123
+ user-provided sessions.
124
+
125
+ ```python
126
+ import aiohttp
127
+ from helix_fhir_client_sdk.fhir_client import FhirClient
128
+
129
+ # Create a persistent session for connection reuse
130
+ session = aiohttp.ClientSession()
131
+
132
+ try:
133
+ # Configure FhirClient to use persistent session
134
+ fhir_client = (
135
+ FhirClient()
136
+ .url("https://fhir.example.com")
137
+ .resource("Patient")
138
+ .use_http_session(lambda: session) # User provides session factory
139
+ )
140
+
141
+ # Multiple requests reuse the same connection (~4× performance boost)
142
+ response1 = await fhir_client.get_async()
143
+ response2 = await fhir_client.clone().resource("Observation").get_async()
144
+
145
+ finally:
146
+ # User must close the session when done
147
+ await session.close()
148
+ ```
149
+
150
+ **Session Lifecycle Rules**:
151
+ - **No custom factory** (default): SDK creates and closes the session automatically
152
+ - **Custom factory provided**: User is responsible for closing the session
153
+
154
+ # Storage Compression
155
+ The FHIR client SDK supports two types of compression:
156
+
157
+ 1. **HTTP Compression** (`compress`): Compresses HTTP request body when sending data to the server. Default: **enabled**
158
+ 2. **In-Memory Storage** (`storage_mode`): Controls how FHIR resources are stored in memory. Default: **raw (no compression)**
159
+
160
+ ## Disabling HTTP Compression
161
+ HTTP compression (gzip) is enabled by default for request bodies. To disable it:
162
+
163
+ ```python
164
+ from helix_fhir_client_sdk.fhir_client import FhirClient
165
+
166
+ # Disable HTTP compression for requests
167
+ fhir_client = FhirClient().url("https://fhir.example.com").compress(False)
168
+ ```
169
+
170
+ ## In-Memory Storage Modes
171
+ The SDK supports different storage modes for FHIR resources through the `set_storage_mode()` method.
172
+ By default, resources are stored as raw Python dictionaries (no compression).
173
+
174
+ ```python
175
+ from helix_fhir_client_sdk.fhir_client import FhirClient
176
+ from compressedfhir.utilities.compressed_dict.v1.compressed_dict_storage_mode import CompressedDictStorageMode
177
+
178
+ # Use raw storage (default) - no compression, resources stored as plain Python dicts
179
+ fhir_client = FhirClient().set_storage_mode(CompressedDictStorageMode(storage_type="raw"))
180
+
181
+ # Use msgpack storage - stores resources in msgpack format
182
+ fhir_client = FhirClient().set_storage_mode(CompressedDictStorageMode(storage_type="msgpack"))
183
+
184
+ # Use compressed msgpack storage - stores resources in compressed msgpack format
185
+ fhir_client = FhirClient().set_storage_mode(CompressedDictStorageMode(storage_type="compressed_msgpack"))
186
+ ```
187
+
188
+ Available storage types:
189
+ - `raw`: Default. Resources are stored as standard Python dictionaries (no compression)
190
+ - `msgpack`: Resources are serialized using MessagePack for efficient storage
191
+ - `compressed_msgpack`: Resources are serialized using MessagePack and then compressed
192
+
193
+ ## Getting Raw Python Dictionaries
194
+ To completely bypass the `compressedfhir` library and get plain Python dictionaries:
195
+
196
+ ```python
197
+ # Returns plain Python dicts, not FhirResource objects
198
+ result = await fhir_client.get_raw_resources_async()
199
+ resources = result["_resources"] # list[dict[str, Any]]
200
+ ```
@@ -1,14 +1,14 @@
1
1
  helix_fhir_client_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  helix_fhir_client_sdk/dictionary_parser.py,sha256=WrGkVAxMlUvVycRVrX7UZt2oP2e_Vk4-E8QibwTpHLM,3401
3
3
  helix_fhir_client_sdk/dictionary_writer.py,sha256=V7Bx9Z69s0LRYF6Lc6Xp0d-Gj0BnAVKA1vBuwf3JORE,1486
4
- helix_fhir_client_sdk/fhir_auth_mixin.py,sha256=l2-Qoi-dlt_NsvmGwhrJPA4dFrqDoAmcHnXeE4h5_jg,14061
4
+ helix_fhir_client_sdk/fhir_auth_mixin.py,sha256=IZbqG_JtABVvN-_xxFrbupe97Hnc7cNoA2l0D3y0gf8,14549
5
5
  helix_fhir_client_sdk/fhir_bundle_appender.py,sha256=t1hs7p_vXKC9MUFyUnN9dTuDhRF-kw-kkgVFtGHv9QQ,11749
6
- helix_fhir_client_sdk/fhir_client.py,sha256=HEVWLrJwpmWhoeHHltF0YstXzXQRr7ET5QqH4Suj-Dc,32693
7
- helix_fhir_client_sdk/fhir_delete_mixin.py,sha256=YmjgY_ICa1ylNysJlSRtjagbkLhSqeFdGM8dShQRw-o,6582
8
- helix_fhir_client_sdk/fhir_merge_mixin.py,sha256=KgmO-KSUVp3Gd827wAuFU15wbPuiAzmxt-FhpIWfpAM,15415
9
- helix_fhir_client_sdk/fhir_merge_resources_mixin.py,sha256=HifGzpRN_EZL_Ik4v1QQJsNUdAFQJiLiqQGdSAEQo5w,27965
10
- helix_fhir_client_sdk/fhir_patch_mixin.py,sha256=NAZrp7CMkEVfynPnTXDN2x3WMfagPnzURDXWH3zA0gQ,5985
11
- helix_fhir_client_sdk/fhir_update_mixin.py,sha256=SVK6XjWP6sbrX9qapY5g0W0eVZq2PhJL0O1XKNhGRJU,6349
6
+ helix_fhir_client_sdk/fhir_client.py,sha256=G6arOw76vcwSkcfAgPHLbOK-B5eWymNMRNygoKIx6FA,37262
7
+ helix_fhir_client_sdk/fhir_delete_mixin.py,sha256=1vgbbBGxXGwp1ay58Du_jWI75BjgfMKtdm5E7A0Oo7U,7738
8
+ helix_fhir_client_sdk/fhir_merge_mixin.py,sha256=ubROibX14IC8iu7CyTKV3KbO34nCJTir3oCT8Gfah_I,18124
9
+ helix_fhir_client_sdk/fhir_merge_resources_mixin.py,sha256=Jynsew9iMWTPeNJ979Dm8EB6DLsc3ddDMeywmeAU6uU,36251
10
+ helix_fhir_client_sdk/fhir_patch_mixin.py,sha256=xFn4RIjGBwnZuIV4eD8E_Yk7lRbwkW6SBHkoNqMz_mk,7360
11
+ helix_fhir_client_sdk/fhir_update_mixin.py,sha256=NQ_6_UHzlFztnH_OrChl6dicC6hR-qBBnPToqZAe_X4,7588
12
12
  helix_fhir_client_sdk/function_types.py,sha256=x95j6ix3Xa9b276Q741xX1jguqBuFT6EBLDw35_EoVM,3916
13
13
  helix_fhir_client_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  helix_fhir_client_sdk/well_known_configuration.py,sha256=hwKpqZoJHkHuCEOowoXk07ywEMMhr_rcmQHNKCUEgVk,221
@@ -32,31 +32,34 @@ helix_fhir_client_sdk/graph/fhir_graph_mixin.py,sha256=z0j9FmO2bOnmzgQmczfkWC70u
32
32
  helix_fhir_client_sdk/graph/graph_definition.py,sha256=FTa1GLjJ6oooAhNw7SPk-Y8duB-5WtJtnwADao-afaI,3878
33
33
  helix_fhir_client_sdk/graph/graph_link_parameters.py,sha256=3rknHL6SBgpT2A1fr-AikEFrR_9nIJUotZ82XFzROLo,599
34
34
  helix_fhir_client_sdk/graph/graph_target_parameters.py,sha256=fdYQpPZxDnyWyevuwDwxeTXOJoE2PgS5QhPaXpwtFcU,705
35
- helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py,sha256=RMVYc2TfGhghGpAhwuCycUTI5xMEVyrd617CvZ3peV4,61568
35
+ helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py,sha256=h8K4peHcoY_4_Ln4Vz54Ls87W7bXegm4SZV2s2L4cCM,60302
36
36
  helix_fhir_client_sdk/graph/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  helix_fhir_client_sdk/graph/test/test_graph_mixin.py,sha256=LNd4LVjryVLgzWeTXMDpsbdauXl7u3LMfj9irnNfb_k,5469
38
38
  helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin.py,sha256=EQDfhqJfUrP6SptXRP7ayEN7g5cZQMA00ccXzeXiSXM,46312
39
39
  helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin_caching.py,sha256=WFzKKHtKDcOOXjXRMKkRyJ64whoJoo9M9ST88ayvEbY,16176
40
+ helix_fhir_client_sdk/open_telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ helix_fhir_client_sdk/open_telemetry/attribute_names.py,sha256=mcPcgpaRe-hZDmPu8gLQo51E_-rllAk2OXMC9uK6EmM,328
42
+ helix_fhir_client_sdk/open_telemetry/span_names.py,sha256=sEuzUXxE9pSoAZti2YVifBqbo3r4SLTPlIUW4F2EuP0,548
40
43
  helix_fhir_client_sdk/queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- helix_fhir_client_sdk/queue/request_queue_mixin.py,sha256=uT_mHoZXhQsC-72oHVuv6vqajieDEirzA2PhtcxqIDw,21682
44
+ helix_fhir_client_sdk/queue/request_queue_mixin.py,sha256=5Oc5lE-9Mu8R6gBcu6a3HUEvWllIzbF2OFXCTD6W2h8,21890
42
45
  helix_fhir_client_sdk/responses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
46
  helix_fhir_client_sdk/responses/bundle_expander.py,sha256=ilR5eMgciSgzsdQvKB6bHtn9jtpvn3uS-EBz-hrahzo,1065
44
- helix_fhir_client_sdk/responses/fhir_client_protocol.py,sha256=9hsgfl4d6P6TcHkzA4SvIbGy5lH8lXr0IkIqUsOcDHE,6893
47
+ helix_fhir_client_sdk/responses/fhir_client_protocol.py,sha256=IWM7LNQ1ZbgaySLGqpCwWAKyArT5HgBdNhkmSEivNMo,7100
45
48
  helix_fhir_client_sdk/responses/fhir_delete_response.py,sha256=0K11vyfZ0LtL-G61NHzDqHrZgEHjMVZr00VWpWcktZA,2941
46
- helix_fhir_client_sdk/responses/fhir_get_response.py,sha256=fOT53vEPPFZsCNrs6dljoNqrxcZaAmZvU5nVAb_ZiGs,17676
49
+ helix_fhir_client_sdk/responses/fhir_get_response.py,sha256=3PXvFoMZ7ix2ZzucIjY-49RL3foLR07dD57BdulyMGI,17657
47
50
  helix_fhir_client_sdk/responses/fhir_merge_response.py,sha256=uvUjEGJgMDlAkcc5_LjgAsTFZqREQMlV79sbxUZwtwE,2862
48
- helix_fhir_client_sdk/responses/fhir_response_processor.py,sha256=IhJ-baLHZOYQP3PSIUgzenDnQuKrd6rvmYoYgPB_-X8,33127
51
+ helix_fhir_client_sdk/responses/fhir_response_processor.py,sha256=fOSvqWjVI1BA6aDxxu9aqEvcKxtnFRmU2hMrgtmUCUM,34056
49
52
  helix_fhir_client_sdk/responses/fhir_update_response.py,sha256=_6zZz85KQP69WFxejlX8BBWAKWtzsMGSJjR_zqhl_m4,2727
50
53
  helix_fhir_client_sdk/responses/get_result.py,sha256=hkbZeu9h-01ZZckAuckn6UDR9GXGgRAIiKEN6ELRj80,1252
51
54
  helix_fhir_client_sdk/responses/paging_result.py,sha256=tpmfdgrtaAmmViVxlw-EBHoe0PVjSQW9zicwRmhUVpI,1360
52
55
  helix_fhir_client_sdk/responses/resource_separator.py,sha256=jugaEkJYunx8VGVFCLwWNSjrBlI8DDm61LzSx9oR8iE,3230
53
56
  helix_fhir_client_sdk/responses/get/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py,sha256=JPr42IxUD8azo98ksBVztKaGt8Qk4w7xK7O77--3f2g,18217
55
- helix_fhir_client_sdk/responses/get/fhir_get_error_response.py,sha256=Fmmhb2JVt6wWIZGWgM5BdyH6ZDr8tMOkkR-3YHxKMwA,12381
56
- helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py,sha256=66BN244RexhFMzV0V6O4w4DcyU0demtI3iZ_x4xvUE0,13809
57
- helix_fhir_client_sdk/responses/get/fhir_get_list_response.py,sha256=yaQBWlgzthIAEyd2slVfa2H4tLmvO1aA_SE9oYwFW3o,11892
58
- helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py,sha256=yqHoyMbChsbTfkLAMAuy9CVLZ5miWA3t64EOsOQlW1Q,6886
59
- helix_fhir_client_sdk/responses/get/fhir_get_single_response.py,sha256=wpQ7dgm8LPBCt4PQJikR1eCGCMp9irYyjYN8RRqGtxE,9789
57
+ helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py,sha256=H-e-Rp_cwU508uJqQfDDCoJR5vN9-5DYsaW7K0yTsxM,18183
58
+ helix_fhir_client_sdk/responses/get/fhir_get_error_response.py,sha256=oNdKs_r7K4qRHD7fyeDhZz3v0wGTT2esAPPtDhxOyeI,12325
59
+ helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py,sha256=ssfb1IB2QTvqwWRzFs_VqPKH6mwcnWNo3iVh82M-Jso,13775
60
+ helix_fhir_client_sdk/responses/get/fhir_get_list_response.py,sha256=KT5g6MjB9yWWUaSZpx1jK9Tm2yVmcFyZMHBBnDDAPtU,11858
61
+ helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py,sha256=OrizzAVoXvxnQbBxszeS9PUtbzg97RGNEJfD4PuOLig,6815
62
+ helix_fhir_client_sdk/responses/get/fhir_get_single_response.py,sha256=pLjjDyxBvA_FNI7sGU2hM9urue3Bzrrwo_RcrOD5yz8,9755
60
63
  helix_fhir_client_sdk/responses/get/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
64
  helix_fhir_client_sdk/responses/get/test/test_get_bundle_response.py,sha256=k66eMtb0e4QcWYeF_M3TUrwCXQgD5EOcpUaijzg7a2I,19545
62
65
  helix_fhir_client_sdk/responses/get/test/test_get_error_response.py,sha256=8P4zGgeHe-6OaSX152ixFW4W0iG2scK89O0VY_YcxuY,7613
@@ -67,7 +70,7 @@ helix_fhir_client_sdk/responses/get/test/test_get_single_response.py,sha256=cDK6
67
70
  helix_fhir_client_sdk/responses/merge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
71
  helix_fhir_client_sdk/responses/merge/base_fhir_merge_resource_response_entry.py,sha256=0PKxQc6sfO2RJka6AS4cX3U_yFnHRR0nsfgva91WrYk,3734
69
72
  helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response.py,sha256=jLHzg-mHYKYBMrAnsx_vnTaP0OCuHJoPEHODCHFxaXA,3226
70
- helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py,sha256=J_r92iqS8YEnfOngblAVDAys-0hRSWmj_EnIMSqm0gk,3332
73
+ helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py,sha256=DyTCoix8MqD9_860I0-Ikl6wCiACzQFMOaEossxyTWc,4626
71
74
  helix_fhir_client_sdk/responses/merge/fhir_merge_response_entry_issue.py,sha256=e7yKvYqdcb45YWblQafyoK1scf62j8Ux80AOdrkQbF4,2048
72
75
  helix_fhir_client_sdk/responses/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
76
  helix_fhir_client_sdk/responses/test/test_bundle_expander.py,sha256=-IMu42ZcRSif8pwDWI0SsBXDI-8gRmOAsshtNhmoROM,877
@@ -101,15 +104,15 @@ helix_fhir_client_sdk/utilities/hash_util.py,sha256=YNUy7-IC_OtC0l-T45UO9UkA-_ps
101
104
  helix_fhir_client_sdk/utilities/list_chunker.py,sha256=2h2k5CCFmOhICaugOx6UI-9dh4q5w1lVdF7WQLX0LCM,1456
102
105
  helix_fhir_client_sdk/utilities/ndjson_chunk_streaming_parser.py,sha256=3TCYfWVCEpJbqRxqlSDsGnFnraO4T9bxzYdShvu6Pos,1954
103
106
  helix_fhir_client_sdk/utilities/practitioner_generator.py,sha256=gneCAXNDNEphBY-Nc2nMQBbEWJgHcjvv3S8JQ75yiJI,3778
104
- helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py,sha256=MABWwbD1JSo0gS9Ctet2mdRNAidawUj5VV8Afb5Zf6s,19914
105
- helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py,sha256=LzM3ptYrNHLRp-oXbFZGXd-gUmH5Cr1xhw6PYxemHYo,3493
107
+ helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py,sha256=ytM4wSpxVLrAp30QtCWnu6SpPac4-Gzwv8d86GmtFgk,22827
108
+ helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py,sha256=DvNX6WO1m2Hz6LoI5CwSPDECPd8oDsqRCVsyq_Oxf-0,3542
106
109
  helix_fhir_client_sdk/utilities/retryable_aiohttp_url_result.py,sha256=Gdmvn6qIM2JF0YOhobQUHY41fCxvYyaths_CZs0iJfo,616
107
110
  helix_fhir_client_sdk/utilities/url_checker.py,sha256=_JRSIvu7WNXh2OA79HJbEEiomGT-quGhAUGh44-9824,3580
108
111
  helix_fhir_client_sdk/utilities/async_parallel_processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
112
  helix_fhir_client_sdk/utilities/async_parallel_processor/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
113
  helix_fhir_client_sdk/utilities/async_parallel_processor/v1/async_parallel_processor.py,sha256=DtjMJEnKiMuYhUbuEo6S8-w4s3hfqGmoOyJ5WCGl0Ak,5640
111
114
  helix_fhir_client_sdk/utilities/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- helix_fhir_client_sdk/utilities/cache/request_cache.py,sha256=75uyNV_fg6IT3HrHlRwDSHr7uXC7AxmjS8skhLMOdNA,5938
115
+ helix_fhir_client_sdk/utilities/cache/request_cache.py,sha256=_9Ug7h22kH66jciHgTjaopB0m6nnVnknSafHh-eT6BI,5439
113
116
  helix_fhir_client_sdk/utilities/cache/request_cache_entry.py,sha256=8e1Se21VVweNI4nSY1OxP8VQmB-d2ZP-bUvtVyOyKa4,477
114
117
  helix_fhir_client_sdk/utilities/size_calculator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
118
  helix_fhir_client_sdk/utilities/size_calculator/size_calculator.py,sha256=NVIzgHjIIJODVV0q8rbOwdqIa1yfgLaJ3jqPAAWxK18,959
@@ -123,13 +126,14 @@ helix_fhir_client_sdk/utilities/test/test_list_chunker.py,sha256=n9J9UZqdluCp2AH
123
126
  helix_fhir_client_sdk/utilities/test/test_ndjson_chunk_streaming_parser.py,sha256=scwktyIIHSRKpw_GTHI4Uj0SsKy3OY4Yf5v5rZGBZXk,5343
124
127
  helix_fhir_client_sdk/utilities/test/test_retryable_aiohttp_client.py,sha256=EeYiYktiLUDTvp5jpJWi7-Qyip4gmI55BJzEhbLpGiE,19121
125
128
  helix_fhir_client_sdk/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
- helix_fhir_client_sdk/validators/async_fhir_validator.py,sha256=Bgiw5atbc5YzBYpkV68oJYFz0uaXZzEg2rgORTH_6PM,3676
129
+ helix_fhir_client_sdk/validators/async_fhir_validator.py,sha256=i1BC98hZF6JhMQQzolEAuxQXCP4CMiRewiuQ1ufe0yQ,3879
127
130
  helix_fhir_client_sdk/validators/fhir_validator.py,sha256=HWBldSEB9yeKIcnLcV8R-LoTzwT_OMu8SchtUUBKzys,2331
128
131
  helix_fhir_client_sdk/validators/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
132
  helix_fhir_client_sdk/validators/test/test_async_fhir_validator.py,sha256=RmSowjPUdZee5nYuYujghxWyqJ20cu7U0lJFtFT-ZBs,3285
130
- helix_fhir_client_sdk-4.2.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
133
+ helix_fhir_client_sdk-4.2.18.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
131
134
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
135
  tests/logger_for_test.py,sha256=UC-7F6w6fDsUIYf37aRnvUdiUUVk8qkJEUSuO17NQnI,1525
136
+ tests/test_fhir_client_clone.py,sha256=c5y1rWJ32nBSUnK1FfyymY005dNowd4Nf1xrbuQolNk,5368
133
137
  tests/test_get_nested_property.py,sha256=dA7eNmPJuwzQTViORRmJkcn9RAZzxeajSxUghobHpAo,2381
134
138
  tests/async/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
139
  tests/async/test_async_fhir_client_fetch_response_in_chunks.py,sha256=Ql95DuOqaidFL6u553f-Bkp4Rsd662C__NA-5sw0KL0,3993
@@ -147,6 +151,9 @@ tests/async/test_async_fhir_client_patient_merge_with_validate.py,sha256=CRTfV0v
147
151
  tests/async/test_async_fhir_client_patient_update.py,sha256=Q-hNO9D4FZ_r7oa62pyBG9keN-ZtkKvlsMK0hoE-5RA,1685
148
152
  tests/async/test_async_real_fhir_server_get_patients.py,sha256=0oMnUJg1KEspJ5_4eBen8z12Ion5HXv-gKAzFAkyII0,3837
149
153
  tests/async/test_async_real_fhir_server_get_patients_error.py,sha256=_s7chLogAg0yKgGpsq1o9_dDHBrzGaRWBAo8agFTN6U,1914
154
+ tests/async/test_benchmark_compress.py,sha256=q1gDG7qXvof-3uVAqJlZAW7uO8cR0vEeDfzl-iwIEtY,16470
155
+ tests/async/test_benchmark_merge.py,sha256=ME0Pow_IXpIaVGWvq3ii7dGltXcz-3DGxz2gGF4LmYQ,19830
156
+ tests/async/test_retryable_client_session_management.py,sha256=h6zTQCICbuz3NpShJc63V9yY_Aur9Fho16-LFDcb4oQ,5658
150
157
  tests/async/fhir_server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
158
  tests/async/fhir_server/test_async_real_fhir_server_get_graph_large.py,sha256=fM2MPF47nDF2Qwj2AkdTZ2CfvgUYGN4AVIS253KC9MQ,9430
152
159
  tests/async/fhir_server/test_async_real_fhir_server_get_patients_large.py,sha256=rXRF8E8Al7XANCmef1d_WqxSA9TVQjVC7B41OZaEQlY,5583
@@ -206,7 +213,7 @@ tests_integration/test_emr_server_auth.py,sha256=2I4QUAspQN89uGf6JB2aVuYaBeDnRJz
206
213
  tests_integration/test_firely_fhir.py,sha256=ll6-plwQrKfdrEyfbw0wLTC1jB-Qei1Mj-81tYTl5eQ,697
207
214
  tests_integration/test_merge_vs_smart_merge_behavior.py,sha256=LrIuyxzw0YLaTjcRtG0jzy0M6xSv9qebmdBtMPDcacQ,3733
208
215
  tests_integration/test_staging_server_graph.py,sha256=5RfMxjhdX9o4-n_ZRvze4Sm8u8NjRijRLDpqiz8qD_0,7132
209
- helix_fhir_client_sdk-4.2.3.dist-info/METADATA,sha256=t-9i1BI9N0b-WRnry1a_Rx6Ab8V4nj9SFArSHgKRKiw,3812
210
- helix_fhir_client_sdk-4.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
211
- helix_fhir_client_sdk-4.2.3.dist-info/top_level.txt,sha256=BRnDS6ceQxs-4u2jXznATObgP8G2cGAerlH0ZS4sJ6M,46
212
- helix_fhir_client_sdk-4.2.3.dist-info/RECORD,,
216
+ helix_fhir_client_sdk-4.2.18.dist-info/METADATA,sha256=pCDGhnLDd-gwFGKTsEffDW5YHvStshWWOsFcEvRRAjc,7210
217
+ helix_fhir_client_sdk-4.2.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
218
+ helix_fhir_client_sdk-4.2.18.dist-info/top_level.txt,sha256=BRnDS6ceQxs-4u2jXznATObgP8G2cGAerlH0ZS4sJ6M,46
219
+ helix_fhir_client_sdk-4.2.18.dist-info/RECORD,,