phenoml 0.0.6__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 (244) hide show
  1. phenoml/__init__.py +30 -0
  2. phenoml/agent/__init__.py +56 -0
  3. phenoml/agent/client.py +939 -0
  4. phenoml/agent/errors/__init__.py +11 -0
  5. phenoml/agent/errors/bad_request_error.py +10 -0
  6. phenoml/agent/errors/forbidden_error.py +10 -0
  7. phenoml/agent/errors/internal_server_error.py +10 -0
  8. phenoml/agent/errors/not_found_error.py +10 -0
  9. phenoml/agent/errors/unauthorized_error.py +10 -0
  10. phenoml/agent/prompts/__init__.py +7 -0
  11. phenoml/agent/prompts/client.py +707 -0
  12. phenoml/agent/prompts/raw_client.py +1345 -0
  13. phenoml/agent/prompts/types/__init__.py +8 -0
  14. phenoml/agent/prompts/types/prompts_delete_response.py +20 -0
  15. phenoml/agent/prompts/types/prompts_list_response.py +22 -0
  16. phenoml/agent/raw_client.py +1668 -0
  17. phenoml/agent/types/__init__.py +43 -0
  18. phenoml/agent/types/agent_chat_response.py +33 -0
  19. phenoml/agent/types/agent_create_request.py +53 -0
  20. phenoml/agent/types/agent_create_request_provider.py +5 -0
  21. phenoml/agent/types/agent_delete_response.py +20 -0
  22. phenoml/agent/types/agent_get_chat_messages_request_order.py +5 -0
  23. phenoml/agent/types/agent_get_chat_messages_response.py +22 -0
  24. phenoml/agent/types/agent_list_response.py +22 -0
  25. phenoml/agent/types/agent_prompts_response.py +22 -0
  26. phenoml/agent/types/agent_response.py +22 -0
  27. phenoml/agent/types/agent_template.py +58 -0
  28. phenoml/agent/types/agent_template_provider.py +5 -0
  29. phenoml/agent/types/chat_message_template.py +72 -0
  30. phenoml/agent/types/chat_session_template.py +67 -0
  31. phenoml/agent/types/json_patch.py +7 -0
  32. phenoml/agent/types/json_patch_operation.py +40 -0
  33. phenoml/agent/types/json_patch_operation_op.py +5 -0
  34. phenoml/agent/types/prompt_template.py +52 -0
  35. phenoml/agent/types/success_response.py +20 -0
  36. phenoml/authtoken/__init__.py +17 -0
  37. phenoml/authtoken/auth/__init__.py +7 -0
  38. phenoml/authtoken/auth/client.py +129 -0
  39. phenoml/authtoken/auth/raw_client.py +173 -0
  40. phenoml/authtoken/auth/types/__init__.py +7 -0
  41. phenoml/authtoken/auth/types/auth_generate_token_response.py +22 -0
  42. phenoml/authtoken/client.py +39 -0
  43. phenoml/authtoken/errors/__init__.py +8 -0
  44. phenoml/authtoken/errors/bad_request_error.py +10 -0
  45. phenoml/authtoken/errors/unauthorized_error.py +10 -0
  46. phenoml/authtoken/raw_client.py +13 -0
  47. phenoml/authtoken/types/__init__.py +8 -0
  48. phenoml/authtoken/types/bad_request_error_body.py +21 -0
  49. phenoml/authtoken/types/unauthorized_error_body.py +21 -0
  50. phenoml/client.py +177 -0
  51. phenoml/cohort/__init__.py +8 -0
  52. phenoml/cohort/client.py +113 -0
  53. phenoml/cohort/errors/__init__.py +9 -0
  54. phenoml/cohort/errors/bad_request_error.py +10 -0
  55. phenoml/cohort/errors/internal_server_error.py +10 -0
  56. phenoml/cohort/errors/unauthorized_error.py +10 -0
  57. phenoml/cohort/raw_client.py +185 -0
  58. phenoml/cohort/types/__init__.py +8 -0
  59. phenoml/cohort/types/cohort_response.py +33 -0
  60. phenoml/cohort/types/search_concept.py +37 -0
  61. phenoml/construe/__init__.py +45 -0
  62. phenoml/construe/client.py +399 -0
  63. phenoml/construe/errors/__init__.py +11 -0
  64. phenoml/construe/errors/bad_request_error.py +10 -0
  65. phenoml/construe/errors/conflict_error.py +10 -0
  66. phenoml/construe/errors/failed_dependency_error.py +10 -0
  67. phenoml/construe/errors/internal_server_error.py +10 -0
  68. phenoml/construe/errors/unauthorized_error.py +10 -0
  69. phenoml/construe/raw_client.py +706 -0
  70. phenoml/construe/types/__init__.py +41 -0
  71. phenoml/construe/types/bad_request_error_body.py +27 -0
  72. phenoml/construe/types/construe_cohort_request_config.py +37 -0
  73. phenoml/construe/types/construe_cohort_response.py +33 -0
  74. phenoml/construe/types/construe_cohort_response_queries_item.py +49 -0
  75. phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item.py +31 -0
  76. phenoml/construe/types/construe_cohort_response_queries_item_code_extract_results_item_codes_item.py +32 -0
  77. phenoml/construe/types/construe_upload_code_system_response.py +19 -0
  78. phenoml/construe/types/extract_codes_result.py +22 -0
  79. phenoml/construe/types/extract_request_config.py +23 -0
  80. phenoml/construe/types/extract_request_config_chunking_method.py +5 -0
  81. phenoml/construe/types/extract_request_system.py +37 -0
  82. phenoml/construe/types/extracted_code_result.py +41 -0
  83. phenoml/construe/types/internal_server_error_body.py +27 -0
  84. phenoml/construe/types/unauthorized_error_body.py +27 -0
  85. phenoml/construe/types/upload_request_format.py +5 -0
  86. phenoml/core/__init__.py +52 -0
  87. phenoml/core/api_error.py +23 -0
  88. phenoml/core/client_wrapper.py +87 -0
  89. phenoml/core/datetime_utils.py +28 -0
  90. phenoml/core/file.py +67 -0
  91. phenoml/core/force_multipart.py +16 -0
  92. phenoml/core/http_client.py +543 -0
  93. phenoml/core/http_response.py +55 -0
  94. phenoml/core/jsonable_encoder.py +100 -0
  95. phenoml/core/pydantic_utilities.py +255 -0
  96. phenoml/core/query_encoder.py +58 -0
  97. phenoml/core/remove_none_from_dict.py +11 -0
  98. phenoml/core/request_options.py +35 -0
  99. phenoml/core/serialization.py +276 -0
  100. phenoml/environment.py +7 -0
  101. phenoml/fhir/__init__.py +36 -0
  102. phenoml/fhir/client.py +970 -0
  103. phenoml/fhir/errors/__init__.py +10 -0
  104. phenoml/fhir/errors/bad_request_error.py +10 -0
  105. phenoml/fhir/errors/internal_server_error.py +10 -0
  106. phenoml/fhir/errors/not_found_error.py +10 -0
  107. phenoml/fhir/errors/unauthorized_error.py +10 -0
  108. phenoml/fhir/raw_client.py +1385 -0
  109. phenoml/fhir/types/__init__.py +29 -0
  110. phenoml/fhir/types/error_response.py +36 -0
  111. phenoml/fhir/types/fhir_bundle.py +43 -0
  112. phenoml/fhir/types/fhir_bundle_entry_item.py +34 -0
  113. phenoml/fhir/types/fhir_bundle_entry_item_request.py +25 -0
  114. phenoml/fhir/types/fhir_bundle_entry_item_request_method.py +5 -0
  115. phenoml/fhir/types/fhir_bundle_entry_item_response.py +24 -0
  116. phenoml/fhir/types/fhir_patch_request_body_item.py +40 -0
  117. phenoml/fhir/types/fhir_patch_request_body_item_op.py +7 -0
  118. phenoml/fhir/types/fhir_resource.py +40 -0
  119. phenoml/fhir/types/fhir_resource_meta.py +28 -0
  120. phenoml/fhir/types/fhir_search_response.py +8 -0
  121. phenoml/fhir_provider/__init__.py +43 -0
  122. phenoml/fhir_provider/client.py +731 -0
  123. phenoml/fhir_provider/errors/__init__.py +11 -0
  124. phenoml/fhir_provider/errors/bad_request_error.py +10 -0
  125. phenoml/fhir_provider/errors/forbidden_error.py +10 -0
  126. phenoml/fhir_provider/errors/internal_server_error.py +10 -0
  127. phenoml/fhir_provider/errors/not_found_error.py +10 -0
  128. phenoml/fhir_provider/errors/unauthorized_error.py +10 -0
  129. phenoml/fhir_provider/raw_client.py +1445 -0
  130. phenoml/fhir_provider/types/__init__.py +35 -0
  131. phenoml/fhir_provider/types/auth_method.py +7 -0
  132. phenoml/fhir_provider/types/fhir_provider_auth_config.py +53 -0
  133. phenoml/fhir_provider/types/fhir_provider_delete_response.py +20 -0
  134. phenoml/fhir_provider/types/fhir_provider_list_response.py +22 -0
  135. phenoml/fhir_provider/types/fhir_provider_remove_auth_config_response.py +22 -0
  136. phenoml/fhir_provider/types/fhir_provider_response.py +22 -0
  137. phenoml/fhir_provider/types/fhir_provider_set_active_auth_config_response.py +22 -0
  138. phenoml/fhir_provider/types/fhir_provider_template.py +66 -0
  139. phenoml/fhir_provider/types/fhir_query_response.py +27 -0
  140. phenoml/fhir_provider/types/fhir_query_response_data.py +5 -0
  141. phenoml/fhir_provider/types/json_web_key.py +51 -0
  142. phenoml/fhir_provider/types/provider.py +8 -0
  143. phenoml/fhir_provider/types/service_account_key.py +35 -0
  144. phenoml/fhir_provider/types/smart_configuration.py +46 -0
  145. phenoml/lang2fhir/__init__.py +27 -0
  146. phenoml/lang2fhir/client.py +430 -0
  147. phenoml/lang2fhir/errors/__init__.py +11 -0
  148. phenoml/lang2fhir/errors/bad_request_error.py +10 -0
  149. phenoml/lang2fhir/errors/failed_dependency_error.py +10 -0
  150. phenoml/lang2fhir/errors/forbidden_error.py +10 -0
  151. phenoml/lang2fhir/errors/internal_server_error.py +10 -0
  152. phenoml/lang2fhir/errors/unauthorized_error.py +10 -0
  153. phenoml/lang2fhir/raw_client.py +788 -0
  154. phenoml/lang2fhir/types/__init__.py +19 -0
  155. phenoml/lang2fhir/types/create_request_resource.py +25 -0
  156. phenoml/lang2fhir/types/document_request_file_type.py +7 -0
  157. phenoml/lang2fhir/types/document_request_resource.py +5 -0
  158. phenoml/lang2fhir/types/fhir_resource.py +5 -0
  159. phenoml/lang2fhir/types/lang2fhir_upload_profile_response.py +23 -0
  160. phenoml/lang2fhir/types/search_response.py +33 -0
  161. phenoml/py.typed +0 -0
  162. phenoml/tools/__init__.py +37 -0
  163. phenoml/tools/client.py +359 -0
  164. phenoml/tools/errors/__init__.py +11 -0
  165. phenoml/tools/errors/bad_request_error.py +10 -0
  166. phenoml/tools/errors/failed_dependency_error.py +10 -0
  167. phenoml/tools/errors/forbidden_error.py +10 -0
  168. phenoml/tools/errors/internal_server_error.py +10 -0
  169. phenoml/tools/errors/unauthorized_error.py +10 -0
  170. phenoml/tools/mcp_server/__init__.py +7 -0
  171. phenoml/tools/mcp_server/client.py +336 -0
  172. phenoml/tools/mcp_server/raw_client.py +641 -0
  173. phenoml/tools/mcp_server/tools/__init__.py +4 -0
  174. phenoml/tools/mcp_server/tools/client.py +358 -0
  175. phenoml/tools/mcp_server/tools/raw_client.py +656 -0
  176. phenoml/tools/raw_client.py +696 -0
  177. phenoml/tools/types/__init__.py +27 -0
  178. phenoml/tools/types/cohort_response.py +49 -0
  179. phenoml/tools/types/lang2fhir_and_create_request_resource.py +25 -0
  180. phenoml/tools/types/lang2fhir_and_create_response.py +33 -0
  181. phenoml/tools/types/lang2fhir_and_search_response.py +40 -0
  182. phenoml/tools/types/mcp_server_response.py +33 -0
  183. phenoml/tools/types/mcp_server_response_data.py +51 -0
  184. phenoml/tools/types/mcp_server_tool_call_response.py +37 -0
  185. phenoml/tools/types/mcp_server_tool_response.py +33 -0
  186. phenoml/tools/types/mcp_server_tool_response_data.py +61 -0
  187. phenoml/tools/types/search_concept.py +41 -0
  188. phenoml/types/__init__.py +21 -0
  189. phenoml/types/cohort_response.py +5 -0
  190. phenoml/types/lang2fhir_and_create_response.py +5 -0
  191. phenoml/types/lang2fhir_and_search_response.py +5 -0
  192. phenoml/types/mcp_server_response.py +5 -0
  193. phenoml/types/mcp_server_tool_call_response.py +5 -0
  194. phenoml/types/mcp_server_tool_response.py +5 -0
  195. phenoml/types/search_concept.py +5 -0
  196. phenoml/version.py +3 -0
  197. phenoml/workflows/__init__.py +66 -0
  198. phenoml/workflows/client.py +210 -0
  199. phenoml/workflows/errors/__init__.py +11 -0
  200. phenoml/workflows/errors/bad_request_error.py +10 -0
  201. phenoml/workflows/errors/forbidden_error.py +10 -0
  202. phenoml/workflows/errors/internal_server_error.py +10 -0
  203. phenoml/workflows/errors/not_found_error.py +10 -0
  204. phenoml/workflows/errors/unauthorized_error.py +10 -0
  205. phenoml/workflows/mcp_server/__init__.py +7 -0
  206. phenoml/workflows/mcp_server/client.py +274 -0
  207. phenoml/workflows/mcp_server/raw_client.py +226 -0
  208. phenoml/workflows/mcp_server/tools/__init__.py +4 -0
  209. phenoml/workflows/mcp_server/tools/client.py +287 -0
  210. phenoml/workflows/mcp_server/tools/raw_client.py +244 -0
  211. phenoml/workflows/raw_client.py +169 -0
  212. phenoml/workflows/types/__init__.py +43 -0
  213. phenoml/workflows/types/create_workflow_response.py +44 -0
  214. phenoml/workflows/types/decision_node_definition.py +32 -0
  215. phenoml/workflows/types/execute_workflow_response.py +30 -0
  216. phenoml/workflows/types/execute_workflow_response_results.py +22 -0
  217. phenoml/workflows/types/lang2fhir_create_definition.py +37 -0
  218. phenoml/workflows/types/lang2fhir_search_definition.py +42 -0
  219. phenoml/workflows/types/list_workflows_response.py +39 -0
  220. phenoml/workflows/types/step_operation.py +26 -0
  221. phenoml/workflows/types/sub_workflow_definition.py +32 -0
  222. phenoml/workflows/types/workflow_config.py +27 -0
  223. phenoml/workflows/types/workflow_definition.py +57 -0
  224. phenoml/workflows/types/workflow_graph.py +23 -0
  225. phenoml/workflows/types/workflow_response.py +61 -0
  226. phenoml/workflows/types/workflow_response_graph.py +23 -0
  227. phenoml/workflows/types/workflow_step.py +55 -0
  228. phenoml/workflows/types/workflow_step_summary.py +47 -0
  229. phenoml/workflows/types/workflow_step_summary_type.py +5 -0
  230. phenoml/workflows/types/workflow_step_type.py +5 -0
  231. phenoml/workflows/workflows/__init__.py +19 -0
  232. phenoml/workflows/workflows/client.py +694 -0
  233. phenoml/workflows/workflows/raw_client.py +1266 -0
  234. phenoml/workflows/workflows/types/__init__.py +17 -0
  235. phenoml/workflows/workflows/types/create_workflow_request_fhir_provider_id.py +5 -0
  236. phenoml/workflows/workflows/types/update_workflow_request_fhir_provider_id.py +5 -0
  237. phenoml/workflows/workflows/types/workflows_delete_response.py +20 -0
  238. phenoml/workflows/workflows/types/workflows_get_response.py +26 -0
  239. phenoml/workflows/workflows/types/workflows_update_response.py +31 -0
  240. phenoml/wrapper_client.py +123 -0
  241. phenoml-0.0.6.dist-info/LICENSE +21 -0
  242. phenoml-0.0.6.dist-info/METADATA +192 -0
  243. phenoml-0.0.6.dist-info/RECORD +244 -0
  244. phenoml-0.0.6.dist-info/WHEEL +4 -0
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .cohort_response import CohortResponse
6
+ from .lang2fhir_and_create_request_resource import Lang2FhirAndCreateRequestResource
7
+ from .lang2fhir_and_create_response import Lang2FhirAndCreateResponse
8
+ from .lang2fhir_and_search_response import Lang2FhirAndSearchResponse
9
+ from .mcp_server_response import McpServerResponse
10
+ from .mcp_server_response_data import McpServerResponseData
11
+ from .mcp_server_tool_call_response import McpServerToolCallResponse
12
+ from .mcp_server_tool_response import McpServerToolResponse
13
+ from .mcp_server_tool_response_data import McpServerToolResponseData
14
+ from .search_concept import SearchConcept
15
+
16
+ __all__ = [
17
+ "CohortResponse",
18
+ "Lang2FhirAndCreateRequestResource",
19
+ "Lang2FhirAndCreateResponse",
20
+ "Lang2FhirAndSearchResponse",
21
+ "McpServerResponse",
22
+ "McpServerResponseData",
23
+ "McpServerToolCallResponse",
24
+ "McpServerToolResponse",
25
+ "McpServerToolResponseData",
26
+ "SearchConcept",
27
+ ]
@@ -0,0 +1,49 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .search_concept import SearchConcept
10
+
11
+
12
+ class CohortResponse(UniversalBaseModel):
13
+ success: typing.Optional[bool] = pydantic.Field(default=None)
14
+ """
15
+ Whether the cohort analysis was successful
16
+ """
17
+
18
+ message: typing.Optional[str] = pydantic.Field(default=None)
19
+ """
20
+ Status message with details about the analysis
21
+ """
22
+
23
+ patient_ids: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="patientIds")] = (
24
+ pydantic.Field(default=None)
25
+ )
26
+ """
27
+ Array of patient IDs that match the cohort criteria
28
+ """
29
+
30
+ patient_count: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="patientCount")] = (
31
+ pydantic.Field(default=None)
32
+ )
33
+ """
34
+ Total number of patients in the cohort
35
+ """
36
+
37
+ queries: typing.Optional[typing.List[SearchConcept]] = pydantic.Field(default=None)
38
+ """
39
+ Individual search concepts that were identified and executed
40
+ """
41
+
42
+ if IS_PYDANTIC_V2:
43
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
44
+ else:
45
+
46
+ class Config:
47
+ frozen = True
48
+ smart_union = True
49
+ extra = pydantic.Extra.allow
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ Lang2FhirAndCreateRequestResource = typing.Union[
6
+ typing.Literal[
7
+ "auto",
8
+ "appointment",
9
+ "condition-encounter-diagnosis",
10
+ "medicationrequest",
11
+ "careplan",
12
+ "condition-problems-health-concerns",
13
+ "coverage",
14
+ "encounter",
15
+ "observation-clinical-result",
16
+ "observation-lab",
17
+ "patient",
18
+ "procedure",
19
+ "questionnaire",
20
+ "questionnaireresponse",
21
+ "simple-observation",
22
+ "vital-signs",
23
+ ],
24
+ typing.Any,
25
+ ]
@@ -0,0 +1,33 @@
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 Lang2FhirAndCreateResponse(UniversalBaseModel):
10
+ fhir_resource: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
11
+ """
12
+ The created FHIR resource
13
+ """
14
+
15
+ fhir_id: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ ID of the resource in the FHIR server (if successfully stored)
18
+ """
19
+
20
+ success: typing.Optional[bool] = None
21
+ message: typing.Optional[str] = pydantic.Field(default=None)
22
+ """
23
+ Status message
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,40 @@
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 Lang2FhirAndSearchResponse(UniversalBaseModel):
10
+ resource_type: typing.Optional[str] = pydantic.Field(default=None)
11
+ """
12
+ The FHIR resource type identified for the search
13
+ """
14
+
15
+ search_params: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ FHIR search parameters in standard format
18
+ """
19
+
20
+ fhir_results: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = pydantic.Field(
21
+ default=None
22
+ )
23
+ """
24
+ Array of FHIR resources returned from the search
25
+ """
26
+
27
+ success: typing.Optional[bool] = None
28
+ message: typing.Optional[str] = pydantic.Field(default=None)
29
+ """
30
+ Status message
31
+ """
32
+
33
+ if IS_PYDANTIC_V2:
34
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
35
+ else:
36
+
37
+ class Config:
38
+ frozen = True
39
+ smart_union = True
40
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
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
+ from .mcp_server_response_data import McpServerResponseData
8
+
9
+
10
+ class McpServerResponse(UniversalBaseModel):
11
+ success: typing.Optional[bool] = pydantic.Field(default=None)
12
+ """
13
+ Whether the MCP server was created successfully
14
+ """
15
+
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
17
+ """
18
+ Status message
19
+ """
20
+
21
+ data: typing.Optional[McpServerResponseData] = pydantic.Field(default=None)
22
+ """
23
+ MCP server data
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,51 @@
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 McpServerResponseData(UniversalBaseModel):
10
+ """
11
+ MCP server data
12
+ """
13
+
14
+ id: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ ID of the MCP server
17
+ """
18
+
19
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ ID of the user who created the MCP server
22
+ """
23
+
24
+ name: typing.Optional[str] = pydantic.Field(default=None)
25
+ """
26
+ Name of the MCP server
27
+ """
28
+
29
+ description: typing.Optional[str] = pydantic.Field(default=None)
30
+ """
31
+ Description of the MCP server
32
+ """
33
+
34
+ mcp_server_url: typing.Optional[str] = pydantic.Field(default=None)
35
+ """
36
+ URL of the MCP server
37
+ """
38
+
39
+ is_active: typing.Optional[bool] = pydantic.Field(default=None)
40
+ """
41
+ Whether the MCP server is active
42
+ """
43
+
44
+ if IS_PYDANTIC_V2:
45
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
46
+ else:
47
+
48
+ class Config:
49
+ frozen = True
50
+ smart_union = True
51
+ extra = pydantic.Extra.allow
@@ -0,0 +1,37 @@
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 McpServerToolCallResponse(UniversalBaseModel):
10
+ success: typing.Optional[bool] = pydantic.Field(default=None)
11
+ """
12
+ Whether the MCP server tool was called successfully
13
+ """
14
+
15
+ message: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ Status message
18
+ """
19
+
20
+ result: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
21
+ """
22
+ Result of the MCP server tool call
23
+ """
24
+
25
+ error: typing.Optional[str] = pydantic.Field(default=None)
26
+ """
27
+ Error message if the call failed
28
+ """
29
+
30
+ if IS_PYDANTIC_V2:
31
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
32
+ else:
33
+
34
+ class Config:
35
+ frozen = True
36
+ smart_union = True
37
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
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
+ from .mcp_server_tool_response_data import McpServerToolResponseData
8
+
9
+
10
+ class McpServerToolResponse(UniversalBaseModel):
11
+ success: typing.Optional[bool] = pydantic.Field(default=None)
12
+ """
13
+ Whether the MCP server tool was created successfully
14
+ """
15
+
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
17
+ """
18
+ Status message
19
+ """
20
+
21
+ data: typing.Optional[McpServerToolResponseData] = pydantic.Field(default=None)
22
+ """
23
+ MCP server tool data
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,61 @@
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 McpServerToolResponseData(UniversalBaseModel):
10
+ """
11
+ MCP server tool data
12
+ """
13
+
14
+ id: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ ID of the MCP server tool
17
+ """
18
+
19
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ ID of the user who created the MCP server tool
22
+ """
23
+
24
+ name: typing.Optional[str] = pydantic.Field(default=None)
25
+ """
26
+ Name of the MCP server tool
27
+ """
28
+
29
+ description: typing.Optional[str] = pydantic.Field(default=None)
30
+ """
31
+ Description of the MCP server tool
32
+ """
33
+
34
+ input_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
35
+ """
36
+ Input schema of the MCP server tool
37
+ """
38
+
39
+ mcp_server_id: typing.Optional[str] = pydantic.Field(default=None)
40
+ """
41
+ ID of the MCP server that the tool belongs to
42
+ """
43
+
44
+ mcp_server_url: typing.Optional[str] = pydantic.Field(default=None)
45
+ """
46
+ URL of the MCP server
47
+ """
48
+
49
+ is_active: typing.Optional[bool] = pydantic.Field(default=None)
50
+ """
51
+ Whether the MCP server tool is active
52
+ """
53
+
54
+ if IS_PYDANTIC_V2:
55
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
56
+ else:
57
+
58
+ class Config:
59
+ frozen = True
60
+ smart_union = True
61
+ extra = pydantic.Extra.allow
@@ -0,0 +1,41 @@
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 SearchConcept(UniversalBaseModel):
10
+ """
11
+ A single search concept detected in cohort mode
12
+ """
13
+
14
+ resource_type: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ The FHIR resource type identified for this concept
17
+ """
18
+
19
+ search_params: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ FHIR search parameters for this concept
22
+ """
23
+
24
+ concept: typing.Optional[str] = pydantic.Field(default=None)
25
+ """
26
+ Description of what this search represents
27
+ """
28
+
29
+ exclude: typing.Optional[bool] = pydantic.Field(default=None)
30
+ """
31
+ Whether this is an exclusion criteria
32
+ """
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .cohort_response import CohortResponse
6
+ from .lang2fhir_and_create_response import Lang2FhirAndCreateResponse
7
+ from .lang2fhir_and_search_response import Lang2FhirAndSearchResponse
8
+ from .mcp_server_response import McpServerResponse
9
+ from .mcp_server_tool_call_response import McpServerToolCallResponse
10
+ from .mcp_server_tool_response import McpServerToolResponse
11
+ from .search_concept import SearchConcept
12
+
13
+ __all__ = [
14
+ "CohortResponse",
15
+ "Lang2FhirAndCreateResponse",
16
+ "Lang2FhirAndSearchResponse",
17
+ "McpServerResponse",
18
+ "McpServerToolCallResponse",
19
+ "McpServerToolResponse",
20
+ "SearchConcept",
21
+ ]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CohortResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ Lang2FhirAndCreateResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ Lang2FhirAndSearchResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ McpServerResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ McpServerToolCallResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ McpServerToolResponse = typing.Optional[typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ SearchConcept = typing.Optional[typing.Any]
phenoml/version.py ADDED
@@ -0,0 +1,3 @@
1
+ from importlib import metadata
2
+
3
+ __version__ = metadata.version("phenoml")
@@ -0,0 +1,66 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .types import (
6
+ CreateWorkflowResponse,
7
+ DecisionNodeDefinition,
8
+ ExecuteWorkflowResponse,
9
+ ExecuteWorkflowResponseResults,
10
+ Lang2FhirCreateDefinition,
11
+ Lang2FhirSearchDefinition,
12
+ ListWorkflowsResponse,
13
+ StepOperation,
14
+ SubWorkflowDefinition,
15
+ WorkflowConfig,
16
+ WorkflowDefinition,
17
+ WorkflowGraph,
18
+ WorkflowResponse,
19
+ WorkflowResponseGraph,
20
+ WorkflowStep,
21
+ WorkflowStepSummary,
22
+ WorkflowStepSummaryType,
23
+ WorkflowStepType,
24
+ )
25
+ from .errors import BadRequestError, ForbiddenError, InternalServerError, NotFoundError, UnauthorizedError
26
+ from . import mcp_server, workflows
27
+ from .workflows import (
28
+ CreateWorkflowRequestFhirProviderId,
29
+ UpdateWorkflowRequestFhirProviderId,
30
+ WorkflowsDeleteResponse,
31
+ WorkflowsGetResponse,
32
+ WorkflowsUpdateResponse,
33
+ )
34
+
35
+ __all__ = [
36
+ "BadRequestError",
37
+ "CreateWorkflowRequestFhirProviderId",
38
+ "CreateWorkflowResponse",
39
+ "DecisionNodeDefinition",
40
+ "ExecuteWorkflowResponse",
41
+ "ExecuteWorkflowResponseResults",
42
+ "ForbiddenError",
43
+ "InternalServerError",
44
+ "Lang2FhirCreateDefinition",
45
+ "Lang2FhirSearchDefinition",
46
+ "ListWorkflowsResponse",
47
+ "NotFoundError",
48
+ "StepOperation",
49
+ "SubWorkflowDefinition",
50
+ "UnauthorizedError",
51
+ "UpdateWorkflowRequestFhirProviderId",
52
+ "WorkflowConfig",
53
+ "WorkflowDefinition",
54
+ "WorkflowGraph",
55
+ "WorkflowResponse",
56
+ "WorkflowResponseGraph",
57
+ "WorkflowStep",
58
+ "WorkflowStepSummary",
59
+ "WorkflowStepSummaryType",
60
+ "WorkflowStepType",
61
+ "WorkflowsDeleteResponse",
62
+ "WorkflowsGetResponse",
63
+ "WorkflowsUpdateResponse",
64
+ "mcp_server",
65
+ "workflows",
66
+ ]