phenoml 0.0.8__py3-none-any.whl → 0.0.10__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 (34) hide show
  1. phenoml/agent/client.py +38 -2
  2. phenoml/agent/raw_client.py +24 -0
  3. phenoml/client.py +4 -4
  4. phenoml/construe/__init__.py +2 -16
  5. phenoml/construe/client.py +0 -90
  6. phenoml/construe/raw_client.py +0 -180
  7. phenoml/construe/types/__init__.py +2 -20
  8. phenoml/construe/types/extract_request_config.py +33 -4
  9. phenoml/construe/types/extract_request_config_chunking_method.py +3 -1
  10. phenoml/construe/types/extract_request_config_validation_method.py +5 -0
  11. phenoml/construe/types/extract_request_system.py +2 -0
  12. phenoml/core/client_wrapper.py +8 -10
  13. phenoml/fhir/client.py +116 -14
  14. phenoml/fhir/raw_client.py +84 -0
  15. phenoml/fhir_provider/__init__.py +2 -0
  16. phenoml/fhir_provider/client.py +21 -4
  17. phenoml/fhir_provider/raw_client.py +23 -6
  18. phenoml/fhir_provider/types/__init__.py +2 -0
  19. phenoml/fhir_provider/types/auth_method.py +1 -1
  20. phenoml/fhir_provider/types/role.py +27 -0
  21. phenoml/tools/client.py +112 -6
  22. phenoml/tools/raw_client.py +82 -2
  23. {phenoml-0.0.8.dist-info → phenoml-0.0.10.dist-info}/METADATA +1 -1
  24. {phenoml-0.0.8.dist-info → phenoml-0.0.10.dist-info}/RECORD +26 -32
  25. phenoml/construe/types/bad_request_error_body.py +0 -27
  26. phenoml/construe/types/construe_cohort_request_config.py +0 -37
  27. phenoml/construe/types/construe_cohort_response.py +0 -33
  28. phenoml/construe/types/construe_cohort_response_queries_item.py +0 -49
  29. phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item.py +0 -31
  30. phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item_codes_item.py +0 -32
  31. phenoml/construe/types/internal_server_error_body.py +0 -27
  32. phenoml/construe/types/unauthorized_error_body.py +0 -27
  33. {phenoml-0.0.8.dist-info → phenoml-0.0.10.dist-info}/LICENSE +0 -0
  34. {phenoml-0.0.8.dist-info → phenoml-0.0.10.dist-info}/WHEEL +0 -0
phenoml/tools/client.py CHANGED
@@ -36,6 +36,8 @@ class ToolsClient:
36
36
  *,
37
37
  resource: Lang2FhirAndCreateRequestResource,
38
38
  text: str,
39
+ phenoml_on_behalf_of: typing.Optional[str] = None,
40
+ phenoml_fhir_provider: typing.Optional[str] = None,
39
41
  provider: typing.Optional[str] = OMIT,
40
42
  request_options: typing.Optional[RequestOptions] = None,
41
43
  ) -> Lang2FhirAndCreateResponse:
@@ -50,6 +52,14 @@ class ToolsClient:
50
52
  text : str
51
53
  Natural language text to convert to FHIR resource
52
54
 
55
+ phenoml_on_behalf_of : typing.Optional[str]
56
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
57
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
58
+
59
+ phenoml_fhir_provider : typing.Optional[str]
60
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
61
+ Multiple FHIR provider integrations can be provided as comma-separated values.
62
+
53
63
  provider : typing.Optional[str]
54
64
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
55
65
 
@@ -69,12 +79,19 @@ class ToolsClient:
69
79
  token="YOUR_TOKEN",
70
80
  )
71
81
  client.tools.create_fhir_resource(
82
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
83
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
72
84
  resource="auto",
73
85
  text="Patient John Doe has severe asthma with acute exacerbation",
74
86
  )
75
87
  """
76
88
  _response = self._raw_client.create_fhir_resource(
77
- resource=resource, text=text, provider=provider, request_options=request_options
89
+ resource=resource,
90
+ text=text,
91
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
92
+ phenoml_fhir_provider=phenoml_fhir_provider,
93
+ provider=provider,
94
+ request_options=request_options,
78
95
  )
79
96
  return _response.data
80
97
 
@@ -82,6 +99,8 @@ class ToolsClient:
82
99
  self,
83
100
  *,
84
101
  text: str,
102
+ phenoml_on_behalf_of: typing.Optional[str] = None,
103
+ phenoml_fhir_provider: typing.Optional[str] = None,
85
104
  patient_id: typing.Optional[str] = OMIT,
86
105
  practitioner_id: typing.Optional[str] = OMIT,
87
106
  count: typing.Optional[int] = OMIT,
@@ -96,6 +115,14 @@ class ToolsClient:
96
115
  text : str
97
116
  Natural language text to convert to FHIR search parameters
98
117
 
118
+ phenoml_on_behalf_of : typing.Optional[str]
119
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
120
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
121
+
122
+ phenoml_fhir_provider : typing.Optional[str]
123
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
124
+ Multiple FHIR provider integrations can be provided as comma-separated values.
125
+
99
126
  patient_id : typing.Optional[str]
100
127
  Patient ID to filter results
101
128
 
@@ -124,11 +151,15 @@ class ToolsClient:
124
151
  token="YOUR_TOKEN",
125
152
  )
126
153
  client.tools.search_fhir_resources(
154
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
155
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
127
156
  text="Find all appointments for patient John Doe next week",
128
157
  )
129
158
  """
130
159
  _response = self._raw_client.search_fhir_resources(
131
160
  text=text,
161
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
162
+ phenoml_fhir_provider=phenoml_fhir_provider,
132
163
  patient_id=patient_id,
133
164
  practitioner_id=practitioner_id,
134
165
  count=count,
@@ -138,7 +169,13 @@ class ToolsClient:
138
169
  return _response.data
139
170
 
140
171
  def analyze_cohort(
141
- self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
172
+ self,
173
+ *,
174
+ text: str,
175
+ provider: str,
176
+ phenoml_on_behalf_of: typing.Optional[str] = None,
177
+ phenoml_fhir_provider: typing.Optional[str] = None,
178
+ request_options: typing.Optional[RequestOptions] = None,
142
179
  ) -> CohortResponse:
143
180
  """
144
181
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -151,6 +188,14 @@ class ToolsClient:
151
188
  provider : str
152
189
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
153
190
 
191
+ phenoml_on_behalf_of : typing.Optional[str]
192
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
193
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
194
+
195
+ phenoml_fhir_provider : typing.Optional[str]
196
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
197
+ Multiple FHIR provider integrations can be provided as comma-separated values.
198
+
154
199
  request_options : typing.Optional[RequestOptions]
155
200
  Request-specific configuration.
156
201
 
@@ -167,11 +212,19 @@ class ToolsClient:
167
212
  token="YOUR_TOKEN",
168
213
  )
169
214
  client.tools.analyze_cohort(
215
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
216
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
170
217
  text="female patients over 20 with diabetes but not hypertension",
171
218
  provider="550e8400-e29b-41d4-a716-446655440000",
172
219
  )
173
220
  """
174
- _response = self._raw_client.analyze_cohort(text=text, provider=provider, request_options=request_options)
221
+ _response = self._raw_client.analyze_cohort(
222
+ text=text,
223
+ provider=provider,
224
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
225
+ phenoml_fhir_provider=phenoml_fhir_provider,
226
+ request_options=request_options,
227
+ )
175
228
  return _response.data
176
229
 
177
230
 
@@ -196,6 +249,8 @@ class AsyncToolsClient:
196
249
  *,
197
250
  resource: Lang2FhirAndCreateRequestResource,
198
251
  text: str,
252
+ phenoml_on_behalf_of: typing.Optional[str] = None,
253
+ phenoml_fhir_provider: typing.Optional[str] = None,
199
254
  provider: typing.Optional[str] = OMIT,
200
255
  request_options: typing.Optional[RequestOptions] = None,
201
256
  ) -> Lang2FhirAndCreateResponse:
@@ -210,6 +265,14 @@ class AsyncToolsClient:
210
265
  text : str
211
266
  Natural language text to convert to FHIR resource
212
267
 
268
+ phenoml_on_behalf_of : typing.Optional[str]
269
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
270
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
271
+
272
+ phenoml_fhir_provider : typing.Optional[str]
273
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
274
+ Multiple FHIR provider integrations can be provided as comma-separated values.
275
+
213
276
  provider : typing.Optional[str]
214
277
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
215
278
 
@@ -234,6 +297,8 @@ class AsyncToolsClient:
234
297
 
235
298
  async def main() -> None:
236
299
  await client.tools.create_fhir_resource(
300
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
301
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
237
302
  resource="auto",
238
303
  text="Patient John Doe has severe asthma with acute exacerbation",
239
304
  )
@@ -242,7 +307,12 @@ class AsyncToolsClient:
242
307
  asyncio.run(main())
243
308
  """
244
309
  _response = await self._raw_client.create_fhir_resource(
245
- resource=resource, text=text, provider=provider, request_options=request_options
310
+ resource=resource,
311
+ text=text,
312
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
313
+ phenoml_fhir_provider=phenoml_fhir_provider,
314
+ provider=provider,
315
+ request_options=request_options,
246
316
  )
247
317
  return _response.data
248
318
 
@@ -250,6 +320,8 @@ class AsyncToolsClient:
250
320
  self,
251
321
  *,
252
322
  text: str,
323
+ phenoml_on_behalf_of: typing.Optional[str] = None,
324
+ phenoml_fhir_provider: typing.Optional[str] = None,
253
325
  patient_id: typing.Optional[str] = OMIT,
254
326
  practitioner_id: typing.Optional[str] = OMIT,
255
327
  count: typing.Optional[int] = OMIT,
@@ -264,6 +336,14 @@ class AsyncToolsClient:
264
336
  text : str
265
337
  Natural language text to convert to FHIR search parameters
266
338
 
339
+ phenoml_on_behalf_of : typing.Optional[str]
340
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
341
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
342
+
343
+ phenoml_fhir_provider : typing.Optional[str]
344
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
345
+ Multiple FHIR provider integrations can be provided as comma-separated values.
346
+
267
347
  patient_id : typing.Optional[str]
268
348
  Patient ID to filter results
269
349
 
@@ -297,6 +377,8 @@ class AsyncToolsClient:
297
377
 
298
378
  async def main() -> None:
299
379
  await client.tools.search_fhir_resources(
380
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
381
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
300
382
  text="Find all appointments for patient John Doe next week",
301
383
  )
302
384
 
@@ -305,6 +387,8 @@ class AsyncToolsClient:
305
387
  """
306
388
  _response = await self._raw_client.search_fhir_resources(
307
389
  text=text,
390
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
391
+ phenoml_fhir_provider=phenoml_fhir_provider,
308
392
  patient_id=patient_id,
309
393
  practitioner_id=practitioner_id,
310
394
  count=count,
@@ -314,7 +398,13 @@ class AsyncToolsClient:
314
398
  return _response.data
315
399
 
316
400
  async def analyze_cohort(
317
- self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
401
+ self,
402
+ *,
403
+ text: str,
404
+ provider: str,
405
+ phenoml_on_behalf_of: typing.Optional[str] = None,
406
+ phenoml_fhir_provider: typing.Optional[str] = None,
407
+ request_options: typing.Optional[RequestOptions] = None,
318
408
  ) -> CohortResponse:
319
409
  """
320
410
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -327,6 +417,14 @@ class AsyncToolsClient:
327
417
  provider : str
328
418
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
329
419
 
420
+ phenoml_on_behalf_of : typing.Optional[str]
421
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
422
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
423
+
424
+ phenoml_fhir_provider : typing.Optional[str]
425
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
426
+ Multiple FHIR provider integrations can be provided as comma-separated values.
427
+
330
428
  request_options : typing.Optional[RequestOptions]
331
429
  Request-specific configuration.
332
430
 
@@ -348,6 +446,8 @@ class AsyncToolsClient:
348
446
 
349
447
  async def main() -> None:
350
448
  await client.tools.analyze_cohort(
449
+ phenoml_on_behalf_of="Patient/550e8400-e29b-41d4-a716-446655440000",
450
+ phenoml_fhir_provider="550e8400-e29b-41d4-a716-446655440000:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c...",
351
451
  text="female patients over 20 with diabetes but not hypertension",
352
452
  provider="550e8400-e29b-41d4-a716-446655440000",
353
453
  )
@@ -355,5 +455,11 @@ class AsyncToolsClient:
355
455
 
356
456
  asyncio.run(main())
357
457
  """
358
- _response = await self._raw_client.analyze_cohort(text=text, provider=provider, request_options=request_options)
458
+ _response = await self._raw_client.analyze_cohort(
459
+ text=text,
460
+ provider=provider,
461
+ phenoml_on_behalf_of=phenoml_on_behalf_of,
462
+ phenoml_fhir_provider=phenoml_fhir_provider,
463
+ request_options=request_options,
464
+ )
359
465
  return _response.data
@@ -31,6 +31,8 @@ class RawToolsClient:
31
31
  *,
32
32
  resource: Lang2FhirAndCreateRequestResource,
33
33
  text: str,
34
+ phenoml_on_behalf_of: typing.Optional[str] = None,
35
+ phenoml_fhir_provider: typing.Optional[str] = None,
34
36
  provider: typing.Optional[str] = OMIT,
35
37
  request_options: typing.Optional[RequestOptions] = None,
36
38
  ) -> HttpResponse[Lang2FhirAndCreateResponse]:
@@ -45,6 +47,14 @@ class RawToolsClient:
45
47
  text : str
46
48
  Natural language text to convert to FHIR resource
47
49
 
50
+ phenoml_on_behalf_of : typing.Optional[str]
51
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
52
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
53
+
54
+ phenoml_fhir_provider : typing.Optional[str]
55
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
56
+ Multiple FHIR provider integrations can be provided as comma-separated values.
57
+
48
58
  provider : typing.Optional[str]
49
59
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
50
60
 
@@ -66,6 +76,8 @@ class RawToolsClient:
66
76
  },
67
77
  headers={
68
78
  "content-type": "application/json",
79
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
80
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
69
81
  },
70
82
  request_options=request_options,
71
83
  omit=OMIT,
@@ -144,6 +156,8 @@ class RawToolsClient:
144
156
  self,
145
157
  *,
146
158
  text: str,
159
+ phenoml_on_behalf_of: typing.Optional[str] = None,
160
+ phenoml_fhir_provider: typing.Optional[str] = None,
147
161
  patient_id: typing.Optional[str] = OMIT,
148
162
  practitioner_id: typing.Optional[str] = OMIT,
149
163
  count: typing.Optional[int] = OMIT,
@@ -158,6 +172,14 @@ class RawToolsClient:
158
172
  text : str
159
173
  Natural language text to convert to FHIR search parameters
160
174
 
175
+ phenoml_on_behalf_of : typing.Optional[str]
176
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
177
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
178
+
179
+ phenoml_fhir_provider : typing.Optional[str]
180
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
181
+ Multiple FHIR provider integrations can be provided as comma-separated values.
182
+
161
183
  patient_id : typing.Optional[str]
162
184
  Patient ID to filter results
163
185
 
@@ -190,6 +212,8 @@ class RawToolsClient:
190
212
  },
191
213
  headers={
192
214
  "content-type": "application/json",
215
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
216
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
193
217
  },
194
218
  request_options=request_options,
195
219
  omit=OMIT,
@@ -265,7 +289,13 @@ class RawToolsClient:
265
289
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
266
290
 
267
291
  def analyze_cohort(
268
- self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
292
+ self,
293
+ *,
294
+ text: str,
295
+ provider: str,
296
+ phenoml_on_behalf_of: typing.Optional[str] = None,
297
+ phenoml_fhir_provider: typing.Optional[str] = None,
298
+ request_options: typing.Optional[RequestOptions] = None,
269
299
  ) -> HttpResponse[CohortResponse]:
270
300
  """
271
301
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -278,6 +308,14 @@ class RawToolsClient:
278
308
  provider : str
279
309
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
280
310
 
311
+ phenoml_on_behalf_of : typing.Optional[str]
312
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
313
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
314
+
315
+ phenoml_fhir_provider : typing.Optional[str]
316
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
317
+ Multiple FHIR provider integrations can be provided as comma-separated values.
318
+
281
319
  request_options : typing.Optional[RequestOptions]
282
320
  Request-specific configuration.
283
321
 
@@ -295,6 +333,8 @@ class RawToolsClient:
295
333
  },
296
334
  headers={
297
335
  "content-type": "application/json",
336
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
337
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
298
338
  },
299
339
  request_options=request_options,
300
340
  omit=OMIT,
@@ -368,6 +408,8 @@ class AsyncRawToolsClient:
368
408
  *,
369
409
  resource: Lang2FhirAndCreateRequestResource,
370
410
  text: str,
411
+ phenoml_on_behalf_of: typing.Optional[str] = None,
412
+ phenoml_fhir_provider: typing.Optional[str] = None,
371
413
  provider: typing.Optional[str] = OMIT,
372
414
  request_options: typing.Optional[RequestOptions] = None,
373
415
  ) -> AsyncHttpResponse[Lang2FhirAndCreateResponse]:
@@ -382,6 +424,14 @@ class AsyncRawToolsClient:
382
424
  text : str
383
425
  Natural language text to convert to FHIR resource
384
426
 
427
+ phenoml_on_behalf_of : typing.Optional[str]
428
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
429
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
430
+
431
+ phenoml_fhir_provider : typing.Optional[str]
432
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
433
+ Multiple FHIR provider integrations can be provided as comma-separated values.
434
+
385
435
  provider : typing.Optional[str]
386
436
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
387
437
 
@@ -403,6 +453,8 @@ class AsyncRawToolsClient:
403
453
  },
404
454
  headers={
405
455
  "content-type": "application/json",
456
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
457
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
406
458
  },
407
459
  request_options=request_options,
408
460
  omit=OMIT,
@@ -481,6 +533,8 @@ class AsyncRawToolsClient:
481
533
  self,
482
534
  *,
483
535
  text: str,
536
+ phenoml_on_behalf_of: typing.Optional[str] = None,
537
+ phenoml_fhir_provider: typing.Optional[str] = None,
484
538
  patient_id: typing.Optional[str] = OMIT,
485
539
  practitioner_id: typing.Optional[str] = OMIT,
486
540
  count: typing.Optional[int] = OMIT,
@@ -495,6 +549,14 @@ class AsyncRawToolsClient:
495
549
  text : str
496
550
  Natural language text to convert to FHIR search parameters
497
551
 
552
+ phenoml_on_behalf_of : typing.Optional[str]
553
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
554
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
555
+
556
+ phenoml_fhir_provider : typing.Optional[str]
557
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
558
+ Multiple FHIR provider integrations can be provided as comma-separated values.
559
+
498
560
  patient_id : typing.Optional[str]
499
561
  Patient ID to filter results
500
562
 
@@ -527,6 +589,8 @@ class AsyncRawToolsClient:
527
589
  },
528
590
  headers={
529
591
  "content-type": "application/json",
592
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
593
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
530
594
  },
531
595
  request_options=request_options,
532
596
  omit=OMIT,
@@ -602,7 +666,13 @@ class AsyncRawToolsClient:
602
666
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
603
667
 
604
668
  async def analyze_cohort(
605
- self, *, text: str, provider: str, request_options: typing.Optional[RequestOptions] = None
669
+ self,
670
+ *,
671
+ text: str,
672
+ provider: str,
673
+ phenoml_on_behalf_of: typing.Optional[str] = None,
674
+ phenoml_fhir_provider: typing.Optional[str] = None,
675
+ request_options: typing.Optional[RequestOptions] = None,
606
676
  ) -> AsyncHttpResponse[CohortResponse]:
607
677
  """
608
678
  Uses LLM to extract search concepts from natural language and builds patient cohorts with inclusion/exclusion criteria
@@ -615,6 +685,14 @@ class AsyncRawToolsClient:
615
685
  provider : str
616
686
  FHIR provider ID - must be a valid UUID from existing FHIR providers. also supports provider by name (e.g. medplum)
617
687
 
688
+ phenoml_on_behalf_of : typing.Optional[str]
689
+ Optional header for on-behalf-of authentication. Used when making requests on behalf of another user or entity.
690
+ Must be in the format: Patient/{uuid} or Practitioner/{uuid}
691
+
692
+ phenoml_fhir_provider : typing.Optional[str]
693
+ Optional header for FHIR provider authentication. Contains credentials in the format {fhir_provider_id}:{oauth2_token}.
694
+ Multiple FHIR provider integrations can be provided as comma-separated values.
695
+
618
696
  request_options : typing.Optional[RequestOptions]
619
697
  Request-specific configuration.
620
698
 
@@ -632,6 +710,8 @@ class AsyncRawToolsClient:
632
710
  },
633
711
  headers={
634
712
  "content-type": "application/json",
713
+ "X-Phenoml-On-Behalf-Of": str(phenoml_on_behalf_of) if phenoml_on_behalf_of is not None else None,
714
+ "X-Phenoml-Fhir-Provider": str(phenoml_fhir_provider) if phenoml_fhir_provider is not None else None,
635
715
  },
636
716
  request_options=request_options,
637
717
  omit=OMIT,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phenoml
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,6 +1,6 @@
1
1
  phenoml/__init__.py,sha256=SeYOCP1ABPA3aB2UDDPr5DOYT4UKKQcw1CHW49I51X8,778
2
2
  phenoml/agent/__init__.py,sha256=oHLnXLJ_uzj3zAtpAUaoXuWZcxl1K8cQh2ommFsp1Kg,1433
3
- phenoml/agent/client.py,sha256=sUG48L4bRFlh8v2ZcwvpqODCoQbKJpFDB-A_HnXBkQg,25347
3
+ phenoml/agent/client.py,sha256=ITjohJGQ0RqsAlFFhCX1Dl7h4GKg0XfncbRSh2uxvqE,27597
4
4
  phenoml/agent/errors/__init__.py,sha256=Wnvf4XPELmAIZ-jVxx2t-dBNZ-X9PcDxPSL5EHqJr1Q,434
5
5
  phenoml/agent/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
6
6
  phenoml/agent/errors/forbidden_error.py,sha256=ek8-sffTy9gY3F0zyaSkcskDVvq9puXP_YvvB2BJYbA,338
@@ -13,7 +13,7 @@ phenoml/agent/prompts/raw_client.py,sha256=n2R6TL8Rjix8ewpA3b3J68hy_sqlBOxMYMNcV
13
13
  phenoml/agent/prompts/types/__init__.py,sha256=N-qiOKtvTg2c7r8DaBddWQDaqjAEve1W-K-yCRLCi84,259
14
14
  phenoml/agent/prompts/types/prompts_delete_response.py,sha256=hG7Y3lEyBAF2-cIIicRO5RVoBNOajNR9PHQ-1L2kMK8,599
15
15
  phenoml/agent/prompts/types/prompts_list_response.py,sha256=7OzSEUyw2frge0HO7BiZf-I_DJBF0o5e20qsmK1-24s,714
16
- phenoml/agent/raw_client.py,sha256=OHMWL-GT2MDyBP_tnO8-vwXX5C3eOO72u4tbH5RE3h8,64230
16
+ phenoml/agent/raw_client.py,sha256=7Yx79x2NTWMVbz3UzWC04v1lhPLvAXozaF5k4uAMzfw,65988
17
17
  phenoml/agent/types/__init__.py,sha256=jMiQhVO3NTKEv5Qm6ZyAeBueWCEFJUzAd78FSsetdME,1566
18
18
  phenoml/agent/types/agent_chat_response.py,sha256=GqPcv7lyZlsypeqFwf1ecouik9A-9xDde0sckYOc8lA,862
19
19
  phenoml/agent/types/agent_create_request.py,sha256=zHEnDylu2M6ZcgfxwWJvXTdMa70UqJ6tTYhLMRK151E,1411
@@ -47,7 +47,7 @@ phenoml/authtoken/raw_client.py,sha256=85R3SJneFJ-fxGXzYOz_Se01pJ9bKXDTB_BP903PL
47
47
  phenoml/authtoken/types/__init__.py,sha256=ruKn1OfqKNJmeB1h39vh7-8srePTRpWsqGQzCH9_vok,260
48
48
  phenoml/authtoken/types/bad_request_error_body.py,sha256=9D69GH2JTNatHxwC7fDlFhTmRKIJ3jRojQP3MwmJ1KI,672
49
49
  phenoml/authtoken/types/unauthorized_error_body.py,sha256=fqqAo2_kWj0nNwLjm1fd-2lQPu5QhPuJP0yB7yE8sRw,674
50
- phenoml/client.py,sha256=ZFB3im-V4KaSdLAPF94s6nbfs-lOYyU7a4a6xelc6Go,7917
50
+ phenoml/client.py,sha256=jc98KWXJuLEAyDq9bCobbzQATmEbi-RioE_K49ExbxI,7835
51
51
  phenoml/cohort/__init__.py,sha256=T7swsjx17aidvorMPqyak0JeX13MT4itAEQvNHNOxuE,320
52
52
  phenoml/cohort/client.py,sha256=4bA8cffE6EvLZVMveJ2_aGu90vtXUHYTfO0E9EQuN9U,3312
53
53
  phenoml/cohort/errors/__init__.py,sha256=su56D86txLO0suHwq_Yixg4EaMbSyaB00cma1beOFGE,312
@@ -58,34 +58,27 @@ phenoml/cohort/raw_client.py,sha256=yhquYZ6fNyhAJG_-6YwQqLMOcIP_JvojryxOEXt_Qfc,
58
58
  phenoml/cohort/types/__init__.py,sha256=zNq1Pom_534srvUJxnEcFPoUK98Cr4oYzPxvL_ifBmc,218
59
59
  phenoml/cohort/types/cohort_response.py,sha256=A0ekTeNT6jh_yMRAcdnMoavcrqUGKZuy_6-k4YwoFmk,981
60
60
  phenoml/cohort/types/search_concept.py,sha256=yIGRoIp8ASZ0I0G-9UA6eTseoZPwHrUuvRRQMamf4yA,1041
61
- phenoml/construe/__init__.py,sha256=xcr0GYiTR5j3lLDWQ0Z9v4m4XCxjG2c_XckxTHZ08Lg,1424
62
- phenoml/construe/client.py,sha256=ASwUxceI3zpaF8OGcljueyEchCIv9JMD5T0kpEDjGXA,12058
61
+ phenoml/construe/__init__.py,sha256=cn_KBBh2epzr6fQAEc8WYPK4RtD2gT2tZmz-FfHFAQM,870
62
+ phenoml/construe/client.py,sha256=VdITc7hZo_ihFPX5_S6sDaxaYoxhRNIYMmTLs8UCSv8,9395
63
63
  phenoml/construe/errors/__init__.py,sha256=vqkSMWgMY6cxAgnI7Gij9m9UwXrlDWmMS12HylhMSi4,455
64
64
  phenoml/construe/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
65
65
  phenoml/construe/errors/conflict_error.py,sha256=NyA4yoleBcQcrDK2rF79eVs62xclhih2kpEIBlAToow,337
66
66
  phenoml/construe/errors/failed_dependency_error.py,sha256=eXiqG062inkUF7fs2Newhx9uAKReK6fosz29PMD4gVw,345
67
67
  phenoml/construe/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
68
68
  phenoml/construe/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
69
- phenoml/construe/raw_client.py,sha256=syLoJNB4K50jDL4CJoeQeNDWu1hZaL2A8gJlWShDw40,27878
70
- phenoml/construe/types/__init__.py,sha256=lYfjtftwp0Vou6qTWRon1ZCgEHfr3qZ3axVHXIkFazg,1794
71
- phenoml/construe/types/bad_request_error_body.py,sha256=YQ-qSOtzI9G3La2W-xCRbYJCM-rlVct6F6T9Yu8EvCQ,716
72
- phenoml/construe/types/construe_cohort_request_config.py,sha256=W-9C8RieHtMy1AmhNVK1ITtjJykFvsy34SFH-IQLH24,1272
73
- phenoml/construe/types/construe_cohort_response.py,sha256=NDJB5ZKUiXyaq5x8OMtNDDuLBN5S0SkOiIwK7dvxi2o,1201
74
- phenoml/construe/types/construe_cohort_response_queries_item.py,sha256=g5N89Hbh4kXAo5wwj6RczpmzixKHG_Mk7LMIr4ZAHtI,1561
75
- phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item.py,sha256=SFsD7pLvYTqRC4TzqxDL2FV9eXjX9WwpfcRFBb7t2Ho,1120
76
- phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item_codes_item.py,sha256=wpXzzwabEE2hO0Q5gSFEBcn9EWSYnX0LV6RaCRzbK_Q,893
69
+ phenoml/construe/raw_client.py,sha256=xXhtTmLzDELw9TEXWSKk9ZK2UXYNKMfp3IAk2EKxzl0,20722
70
+ phenoml/construe/types/__init__.py,sha256=Id0OJ58ZEQX9Ut-7iMwWEv49MTJLTTmNPH9es1ya8Cw,900
77
71
  phenoml/construe/types/construe_upload_code_system_response.py,sha256=s0m5EHpkhkp7hYiC5zLZeIeqQ4mrwXlPI1Msihb-ZGo,566
78
72
  phenoml/construe/types/extract_codes_result.py,sha256=DbVDLWqtmt9TyD5MC0q8grgnNXPnXq4eJnLDinTe0uc,701
79
- phenoml/construe/types/extract_request_config.py,sha256=r0HBi3YPCKzvy0zjP6lRvEMar2u1b-NB1lAjF0Ds1YU,844
80
- phenoml/construe/types/extract_request_config_chunking_method.py,sha256=7tl9HJ3ZryBEsg3O95mVexEwQ3gfX6ApYCgxaot2ljo,201
81
- phenoml/construe/types/extract_request_system.py,sha256=1jEgawo7XAJAv4E46hdhFRAhDCE5DXHcTIIYcDg2Klg,1141
73
+ phenoml/construe/types/extract_request_config.py,sha256=-N_yPxXcWeuFx2JNOJIGHjtyJNSFMOGslmLbjYxMh18,1831
74
+ phenoml/construe/types/extract_request_config_chunking_method.py,sha256=AmVPPj0oT5r0pwWUoFxG_K8s5g8xaGYIRsPt3VvqSXQ,209
75
+ phenoml/construe/types/extract_request_config_validation_method.py,sha256=6uUqKn8DXF34EDtNKPa6KLW07DsxgQF2aR5BGdG5Fd4,199
76
+ phenoml/construe/types/extract_request_system.py,sha256=50qkxvinJKS5y1_glr-OFe5tQRyMWLYpeny1NZ9gFzw,1191
82
77
  phenoml/construe/types/extracted_code_result.py,sha256=LmhaQYFeLXBWR_NWcF1c-qt3OqwWQduefvInJRHcvio,1121
83
- phenoml/construe/types/internal_server_error_body.py,sha256=LbZ3C6FayIwL-0oBJAcsSoLF6F4lcz2d3osoNPBCM44,720
84
- phenoml/construe/types/unauthorized_error_body.py,sha256=j7msnWr6ENYKxLVrfi2ZTg4eh1b1rSyd1VNSsBbOIAc,718
85
78
  phenoml/construe/types/upload_request_format.py,sha256=5mJhMM7R7hn6gGQNDJT9lxPDsRpUkRzqNxtRU0Nnlls,158
86
79
  phenoml/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
87
80
  phenoml/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
88
- phenoml/core/client_wrapper.py,sha256=6ZudxaQ9t8ZjaT09V0Ta4cVIVwiOwUgYuZYy70wOxvc,2811
81
+ phenoml/core/client_wrapper.py,sha256=v9axvK2KlCjPEFGEw6CRb_jb-rJAR1R24hCL6LwuPng,2642
89
82
  phenoml/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
90
83
  phenoml/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
91
84
  phenoml/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -99,13 +92,13 @@ phenoml/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxp
99
92
  phenoml/core/serialization.py,sha256=ECL3bvv_0i7U4uvPidZCNel--MUbA0iq0aGcNKi3kws,9818
100
93
  phenoml/environment.py,sha256=x2TB5u9AblwVCke6_38YZmVhcjjHLE5gXBo5TMeaeO8,164
101
94
  phenoml/fhir/__init__.py,sha256=CGOe2OSGyiryHY66fcRyZXsSMHiM5Y_GkTNPUqzwTP8,910
102
- phenoml/fhir/client.py,sha256=gcPfXFlpzIrQxK17mJbVhnfpM-6YsnovJXrsGVDFG7w,34747
95
+ phenoml/fhir/client.py,sha256=1hQSCDOYsC89zPlPWHJIKgVBa-j8mRT_97lDHFJ3jN8,43581
103
96
  phenoml/fhir/errors/__init__.py,sha256=1K_bceYvXUdWyvhH-WRwOEcc1gkiT_K6kGrs3VKg3PA,372
104
97
  phenoml/fhir/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
105
98
  phenoml/fhir/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
106
99
  phenoml/fhir/errors/not_found_error.py,sha256=hQ1KdyGQJCBQqo6iLu2-szlKJdzaoV5odq_7kdXAEbc,337
107
100
  phenoml/fhir/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
108
- phenoml/fhir/raw_client.py,sha256=T2yO55UzMc2hyTPsp_2PgXQ_hyURSjA3DQhjZMQs9uY,60044
101
+ phenoml/fhir/raw_client.py,sha256=XZE1iWjujv5hSROSSo8kdG773l6T_vKV66iZYqcvNks,66380
109
102
  phenoml/fhir/types/__init__.py,sha256=J9Gj1h5TZ5mNjBYE-Vn2bVPR3VCRwRIf1BrS5DHQrV4,1054
110
103
  phenoml/fhir/types/error_response.py,sha256=Vw1veSbj51ki93gmYml3fRjB6XAEwvnkcYkSNhyLDeU,897
111
104
  phenoml/fhir/types/fhir_bundle.py,sha256=p_CsuL2U1q7Qzmkdu6vCBtNZLznWmHXw5WtMzDnstdE,1373
@@ -118,17 +111,17 @@ phenoml/fhir/types/fhir_patch_request_body_item_op.py,sha256=qOU6uYuWoscQ876W58a
118
111
  phenoml/fhir/types/fhir_resource.py,sha256=kZxeWoOMiGqwfwdxgdWg3NUjFFTuVKCAv6Ty80myhuI,1223
119
112
  phenoml/fhir/types/fhir_resource_meta.py,sha256=9nXzZ7V7u0x9ehDyjoydmVl7leXzzvIOzxSQJSYmHbk,934
120
113
  phenoml/fhir/types/fhir_search_response.py,sha256=rUuRN_iECtOyETTKGx4WNBinrvC0XU4ivsPipI6OyHw,217
121
- phenoml/fhir_provider/__init__.py,sha256=UPXzyoYkXqIrbgkMnx8lDFN4n9H1InYHcwNQ6s8Qm8M,1120
122
- phenoml/fhir_provider/client.py,sha256=5alBWSZ6gpsIvPQXLjSeE_hzlle-h2NFWGr-DbLOazs,22040
114
+ phenoml/fhir_provider/__init__.py,sha256=eJCs8myQf5vFvBw61XfbU2zREeU2Twq_epJYlX6ldE4,1142
115
+ phenoml/fhir_provider/client.py,sha256=htt7uajiTavAIUe5-45ucaAX0evxcEulHaFV1Hcgaug,23429
123
116
  phenoml/fhir_provider/errors/__init__.py,sha256=Wnvf4XPELmAIZ-jVxx2t-dBNZ-X9PcDxPSL5EHqJr1Q,434
124
117
  phenoml/fhir_provider/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
125
118
  phenoml/fhir_provider/errors/forbidden_error.py,sha256=ek8-sffTy9gY3F0zyaSkcskDVvq9puXP_YvvB2BJYbA,338
126
119
  phenoml/fhir_provider/errors/internal_server_error.py,sha256=biBHJfSP1_zWF5CJgxY4B8wrL1uC18RSccQ-BCKmYNs,343
127
120
  phenoml/fhir_provider/errors/not_found_error.py,sha256=hQ1KdyGQJCBQqo6iLu2-szlKJdzaoV5odq_7kdXAEbc,337
128
121
  phenoml/fhir_provider/errors/unauthorized_error.py,sha256=h8T6QhXuTo0GLL9MKfIM5p--wDqlB1-ZkMp3lY-aM3E,341
129
- phenoml/fhir_provider/raw_client.py,sha256=qZt8eVc0oZk-u4AFbxGhZ_sBy-DnvOyAieIfSLJgDcU,58883
130
- phenoml/fhir_provider/types/__init__.py,sha256=rigqiWwEfwDhPPX3i42fjHWn4lzT2jlKaToSMGG44zs,1321
131
- phenoml/fhir_provider/types/auth_method.py,sha256=5ToMMmvGIssVlUezB7EsRsPyVaezZHdpoW3piKoPrCw,209
122
+ phenoml/fhir_provider/raw_client.py,sha256=h1f9kQiyzKos3HD-qc0Daw4IuJLRQR3_yYn5101TLd4,60286
123
+ phenoml/fhir_provider/types/__init__.py,sha256=nI5cnzergAlcDXfQkIAtJOEibdOqQ2BYTZGQrLAm2E4,1356
124
+ phenoml/fhir_provider/types/auth_method.py,sha256=Ox5c5SQo1EHAwkhBNOJHEovgE6U2OoSvgXHLlqgk9-U,230
132
125
  phenoml/fhir_provider/types/fhir_provider_auth_config.py,sha256=-SGF8RiYF7tdttGCmagmZsO5OxL-Gz0sXV8OaYow9SA,1651
133
126
  phenoml/fhir_provider/types/fhir_provider_delete_response.py,sha256=mye_IDz2hAw7BxuzeRjkPjuFAeeEsdFk0RQrSP4ZzjM,603
134
127
  phenoml/fhir_provider/types/fhir_provider_list_response.py,sha256=ZoJMAhVgFAONuY0rt7glykjdWOskoSxi6_8JXVEf1_I,736
@@ -140,6 +133,7 @@ phenoml/fhir_provider/types/fhir_query_response.py,sha256=fOy_oCRexu2iZgDWW6sRIR
140
133
  phenoml/fhir_provider/types/fhir_query_response_data.py,sha256=TfQ94GSU7NUfkxpy1VNFwOoUmFn4OxZxqFVkQDADsMk,169
141
134
  phenoml/fhir_provider/types/json_web_key.py,sha256=ouUPhdvlASdBSJyazqecjQ64A9V9aqvtSt1wt2K3MLg,1615
142
135
  phenoml/fhir_provider/types/provider.py,sha256=AmGOmoy5Cv9W0km4rAf3mxqH3g3UUnj_xC4FopPMdAk,238
136
+ phenoml/fhir_provider/types/role.py,sha256=Igag80s-KaGOc4nWfrGWyT81HU__c6_WJ-1oV7DOVdE,638
143
137
  phenoml/fhir_provider/types/service_account_key.py,sha256=uup1Xl0HSc_B3278i0CS-ygCroShLS5_q0KtqXI96HY,1085
144
138
  phenoml/fhir_provider/types/smart_configuration.py,sha256=bG_J1yNFEWWo9kjxF0s2Ik9rXehB1JHcQ2fTn6dht6k,1174
145
139
  phenoml/lang2fhir/__init__.py,sha256=R8VOE03BLTk90GJVBfpiUXHeODUNX3rZLkRIC21s1ow,694
@@ -182,7 +176,7 @@ phenoml/summary/types/summary_list_templates_response.py,sha256=go45lFGp3KktaZq4
182
176
  phenoml/summary/types/summary_template.py,sha256=eCM6BVMZC4jxp7d2PoIfcluflAMXa07oZcXf0nzytXM,1269
183
177
  phenoml/summary/types/summary_update_template_response.py,sha256=1i_2LELTdulyXLNaEaN10Phy9KZfmGUBQCcj_9eZZy4,706
184
178
  phenoml/tools/__init__.py,sha256=tWbUCa1RVpte1Ov53WgLExOXvGT72Mol2JM1Ul3nj3M,989
185
- phenoml/tools/client.py,sha256=bEyLqb871q0juD2KmTstnIb4x4LpmCv-72-rqpEC_kg,11571
179
+ phenoml/tools/client.py,sha256=JRLj2mUGWuJ_ClRiSRimSKxx55hWQOLtPACpvFFVqxw,18261
186
180
  phenoml/tools/errors/__init__.py,sha256=nIzg981R3USgSar0WuuVrpDVg-H5vIp2AceEzbhphGw,458
187
181
  phenoml/tools/errors/bad_request_error.py,sha256=nv0bK4gtOnTon6a2NdVxJxHBje_O_7wIoRtXLZHovUQ,339
188
182
  phenoml/tools/errors/failed_dependency_error.py,sha256=eXiqG062inkUF7fs2Newhx9uAKReK6fosz29PMD4gVw,345
@@ -195,7 +189,7 @@ phenoml/tools/mcp_server/raw_client.py,sha256=AVnepraHeEuI4zl1eBeHC3_-mkc7zfEIeY
195
189
  phenoml/tools/mcp_server/tools/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
196
190
  phenoml/tools/mcp_server/tools/client.py,sha256=iu-AclviqNB9NWfkS_h7LY9exfzPGmAjOG3MIbQgtuk,9807
197
191
  phenoml/tools/mcp_server/tools/raw_client.py,sha256=FC_OQZ526AGrN1lAnYLvtr-s8NrHfcKUpxM_YLKZgos,26380
198
- phenoml/tools/raw_client.py,sha256=7ElVS3AkkDZM38zMVsTQAQC3jgXXMBLw4Kkfeage8Go,28092
192
+ phenoml/tools/raw_client.py,sha256=AdHQW0jlx-QtysAT2lo8DuxFZE1rsU_ji8EbPfLrVPc,33432
199
193
  phenoml/tools/types/__init__.py,sha256=Q9a9RbiUDz9jFLZi_43I40t8ZZuolzaDtluYJWV8yN8,1021
200
194
  phenoml/tools/types/cohort_response.py,sha256=Nft1eLyFhNrKDNYOhQxzSH1o35JS7UdZlTgI9ndjdVM,1503
201
195
  phenoml/tools/types/lang2fhir_and_create_request_resource.py,sha256=mIBUXOfKrweiYsCu-vxboK_uDu43GQUEdKWlVLHMOyU,608
@@ -242,7 +236,7 @@ phenoml/workflows/types/workflows_delete_response.py,sha256=izcubUOnSNOgThD9Ozo6
242
236
  phenoml/workflows/types/workflows_get_response.py,sha256=gfNyUs14JSynprRwT-fuq4IDsGrPZmUSsK3WmgqIEi8,891
243
237
  phenoml/workflows/types/workflows_update_response.py,sha256=FEvQpC9ZRk8dV1oaIAwV5bSDD2tkXZ5fG4mozRjibuQ,1046
244
238
  phenoml/wrapper_client.py,sha256=JYTdhXgju4tOsata06wQY_ZbMsuMj3qaxkgvDzpY068,5022
245
- phenoml-0.0.8.dist-info/LICENSE,sha256=Am1fNNveR2gcmOloSWQTsnUw2SQEF8HtowFqIvlagfk,1064
246
- phenoml-0.0.8.dist-info/METADATA,sha256=_rm_FtMu-OFxS6oYzd06yahqlv0JBOpIViiY_yjYnfc,5330
247
- phenoml-0.0.8.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
248
- phenoml-0.0.8.dist-info/RECORD,,
239
+ phenoml-0.0.10.dist-info/LICENSE,sha256=Am1fNNveR2gcmOloSWQTsnUw2SQEF8HtowFqIvlagfk,1064
240
+ phenoml-0.0.10.dist-info/METADATA,sha256=Rh79dAmGywpTFwXmxSNvMDu_LeOG4pT0tPywaOFZ51E,5331
241
+ phenoml-0.0.10.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
242
+ phenoml-0.0.10.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import typing
4
-
5
- import pydantic
6
- from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
-
8
-
9
- class BadRequestErrorBody(UniversalBaseModel):
10
- status: typing.Optional[int] = pydantic.Field(default=None)
11
- """
12
- HTTP status code.
13
- """
14
-
15
- message: typing.Optional[str] = pydantic.Field(default=None)
16
- """
17
- Error message.
18
- """
19
-
20
- if IS_PYDANTIC_V2:
21
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
- else:
23
-
24
- class Config:
25
- frozen = True
26
- smart_union = True
27
- extra = pydantic.Extra.allow