phenoml 0.0.2__py3-none-any.whl → 0.0.17__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 (149) hide show
  1. phenoml/agent/__init__.py +6 -8
  2. phenoml/agent/client.py +85 -67
  3. phenoml/agent/raw_client.py +61 -77
  4. phenoml/agent/types/__init__.py +6 -8
  5. phenoml/agent/types/agent_create_request.py +53 -0
  6. phenoml/agent/types/agent_create_request_provider.py +5 -0
  7. phenoml/agent/types/agent_template.py +3 -6
  8. phenoml/agent/types/agent_template_provider.py +5 -0
  9. phenoml/agent/types/json_patch_operation.py +5 -1
  10. phenoml/client.py +12 -0
  11. phenoml/construe/__init__.py +2 -16
  12. phenoml/construe/client.py +0 -90
  13. phenoml/construe/raw_client.py +0 -180
  14. phenoml/construe/types/__init__.py +2 -20
  15. phenoml/construe/types/extract_request_config.py +33 -4
  16. phenoml/construe/types/extract_request_config_chunking_method.py +3 -1
  17. phenoml/construe/types/extract_request_config_validation_method.py +5 -0
  18. phenoml/construe/types/extract_request_system.py +2 -0
  19. phenoml/core/client_wrapper.py +2 -2
  20. phenoml/fhir/__init__.py +36 -0
  21. phenoml/fhir/client.py +1072 -0
  22. phenoml/fhir/errors/__init__.py +10 -0
  23. phenoml/fhir/errors/bad_request_error.py +10 -0
  24. phenoml/fhir/errors/internal_server_error.py +10 -0
  25. phenoml/fhir/errors/not_found_error.py +10 -0
  26. phenoml/fhir/errors/unauthorized_error.py +10 -0
  27. phenoml/fhir/raw_client.py +1469 -0
  28. phenoml/fhir/types/__init__.py +29 -0
  29. phenoml/{agent/types/chat_fhir_client_config.py → fhir/types/error_response.py} +11 -6
  30. phenoml/fhir/types/fhir_bundle.py +43 -0
  31. phenoml/fhir/types/fhir_bundle_entry_item.py +34 -0
  32. phenoml/fhir/types/fhir_bundle_entry_item_request.py +25 -0
  33. phenoml/fhir/types/fhir_bundle_entry_item_request_method.py +5 -0
  34. phenoml/{construe/types/bad_request_error_body.py → fhir/types/fhir_bundle_entry_item_response.py} +4 -7
  35. phenoml/fhir/types/fhir_patch_request_body_item.py +40 -0
  36. phenoml/fhir/types/fhir_patch_request_body_item_op.py +7 -0
  37. phenoml/fhir/types/fhir_resource.py +40 -0
  38. phenoml/fhir/types/fhir_resource_meta.py +28 -0
  39. phenoml/fhir/types/fhir_search_response.py +8 -0
  40. phenoml/fhir_provider/__init__.py +45 -0
  41. phenoml/fhir_provider/client.py +748 -0
  42. phenoml/fhir_provider/errors/__init__.py +11 -0
  43. phenoml/fhir_provider/errors/bad_request_error.py +10 -0
  44. phenoml/fhir_provider/errors/forbidden_error.py +10 -0
  45. phenoml/fhir_provider/errors/internal_server_error.py +10 -0
  46. phenoml/fhir_provider/errors/not_found_error.py +10 -0
  47. phenoml/fhir_provider/errors/unauthorized_error.py +10 -0
  48. phenoml/fhir_provider/raw_client.py +1462 -0
  49. phenoml/fhir_provider/types/__init__.py +37 -0
  50. phenoml/fhir_provider/types/auth_method.py +7 -0
  51. phenoml/fhir_provider/types/fhir_provider_auth_config.py +53 -0
  52. phenoml/fhir_provider/types/fhir_provider_delete_response.py +20 -0
  53. phenoml/fhir_provider/types/fhir_provider_list_response.py +22 -0
  54. phenoml/fhir_provider/types/fhir_provider_remove_auth_config_response.py +22 -0
  55. phenoml/fhir_provider/types/fhir_provider_response.py +22 -0
  56. phenoml/fhir_provider/types/fhir_provider_set_active_auth_config_response.py +22 -0
  57. phenoml/fhir_provider/types/fhir_provider_template.py +66 -0
  58. phenoml/fhir_provider/types/fhir_query_response.py +27 -0
  59. phenoml/fhir_provider/types/fhir_query_response_data.py +5 -0
  60. phenoml/fhir_provider/types/json_web_key.py +51 -0
  61. phenoml/fhir_provider/types/provider.py +8 -0
  62. phenoml/fhir_provider/types/role.py +27 -0
  63. phenoml/fhir_provider/types/service_account_key.py +35 -0
  64. phenoml/fhir_provider/types/smart_configuration.py +46 -0
  65. phenoml/lang2fhir/__init__.py +10 -0
  66. phenoml/lang2fhir/client.py +111 -6
  67. phenoml/lang2fhir/raw_client.py +189 -0
  68. phenoml/lang2fhir/types/__init__.py +10 -0
  69. phenoml/lang2fhir/types/create_multi_response.py +39 -0
  70. phenoml/lang2fhir/types/create_multi_response_bundle.py +28 -0
  71. phenoml/lang2fhir/types/create_multi_response_bundle_entry_item.py +24 -0
  72. phenoml/lang2fhir/types/create_multi_response_bundle_entry_item_request.py +20 -0
  73. phenoml/{construe/types/construe_cohort_response_queries_item_code_extract_results_item_codes_item.py → lang2fhir/types/create_multi_response_resources_item.py} +13 -7
  74. phenoml/summary/__init__.py +41 -0
  75. phenoml/summary/client.py +668 -0
  76. phenoml/summary/errors/__init__.py +11 -0
  77. phenoml/summary/errors/bad_request_error.py +10 -0
  78. phenoml/summary/errors/forbidden_error.py +10 -0
  79. phenoml/summary/errors/internal_server_error.py +10 -0
  80. phenoml/summary/errors/not_found_error.py +10 -0
  81. phenoml/summary/errors/unauthorized_error.py +10 -0
  82. phenoml/summary/raw_client.py +1202 -0
  83. phenoml/summary/types/__init__.py +33 -0
  84. phenoml/summary/types/create_summary_request_fhir_resources.py +8 -0
  85. phenoml/summary/types/create_summary_request_mode.py +5 -0
  86. phenoml/{agent/types/agent_fhir_config.py → summary/types/create_summary_response.py} +7 -9
  87. phenoml/summary/types/create_summary_template_response.py +23 -0
  88. phenoml/{construe/types/unauthorized_error_body.py → summary/types/error_response.py} +4 -8
  89. phenoml/summary/types/fhir_bundle.py +23 -0
  90. phenoml/summary/types/fhir_bundle_entry_item.py +20 -0
  91. phenoml/summary/types/fhir_resource.py +24 -0
  92. phenoml/summary/types/summary_delete_template_response.py +20 -0
  93. phenoml/summary/types/summary_get_template_response.py +21 -0
  94. phenoml/summary/types/summary_list_templates_response.py +21 -0
  95. phenoml/summary/types/summary_template.py +41 -0
  96. phenoml/summary/types/summary_update_template_response.py +22 -0
  97. phenoml/tools/__init__.py +6 -8
  98. phenoml/tools/client.py +259 -44
  99. phenoml/tools/raw_client.py +347 -55
  100. phenoml/tools/types/__init__.py +6 -8
  101. phenoml/tools/types/lang2fhir_and_create_multi_response.py +41 -0
  102. phenoml/{construe/types/construe_cohort_response_queries_item_code_extract_results_item.py → tools/types/lang2fhir_and_create_multi_response_resource_info_item.py} +14 -7
  103. phenoml/tools/types/lang2fhir_and_create_multi_response_response_bundle.py +27 -0
  104. phenoml/workflows/__init__.py +61 -0
  105. phenoml/workflows/client.py +694 -0
  106. phenoml/workflows/errors/__init__.py +11 -0
  107. phenoml/workflows/errors/bad_request_error.py +10 -0
  108. phenoml/workflows/errors/forbidden_error.py +10 -0
  109. phenoml/workflows/errors/internal_server_error.py +10 -0
  110. phenoml/workflows/errors/not_found_error.py +10 -0
  111. phenoml/workflows/errors/unauthorized_error.py +10 -0
  112. phenoml/workflows/raw_client.py +1266 -0
  113. phenoml/workflows/types/__init__.py +53 -0
  114. phenoml/workflows/types/create_workflow_request_fhir_provider_id.py +5 -0
  115. phenoml/workflows/types/create_workflow_response.py +44 -0
  116. phenoml/{tools/types/fhir_client_config.py → workflows/types/decision_node_definition.py} +7 -6
  117. phenoml/workflows/types/execute_workflow_response.py +30 -0
  118. phenoml/{construe/types/internal_server_error_body.py → workflows/types/execute_workflow_response_results.py} +3 -8
  119. phenoml/workflows/types/lang2fhir_create_definition.py +37 -0
  120. phenoml/workflows/types/lang2fhir_search_definition.py +42 -0
  121. phenoml/workflows/types/list_workflows_response.py +39 -0
  122. phenoml/workflows/types/step_operation.py +26 -0
  123. phenoml/workflows/types/sub_workflow_definition.py +32 -0
  124. phenoml/workflows/types/update_workflow_request_fhir_provider_id.py +5 -0
  125. phenoml/workflows/types/workflow_config.py +27 -0
  126. phenoml/workflows/types/workflow_definition.py +57 -0
  127. phenoml/workflows/types/workflow_graph.py +23 -0
  128. phenoml/workflows/types/workflow_response.py +61 -0
  129. phenoml/workflows/types/workflow_response_graph.py +23 -0
  130. phenoml/workflows/types/workflow_step.py +55 -0
  131. phenoml/workflows/types/workflow_step_summary.py +47 -0
  132. phenoml/workflows/types/workflow_step_summary_type.py +5 -0
  133. phenoml/workflows/types/workflow_step_type.py +5 -0
  134. phenoml/workflows/types/workflows_delete_response.py +20 -0
  135. phenoml/workflows/types/workflows_get_response.py +26 -0
  136. phenoml/workflows/types/workflows_update_response.py +31 -0
  137. phenoml-0.0.17.dist-info/LICENSE +21 -0
  138. {phenoml-0.0.2.dist-info → phenoml-0.0.17.dist-info}/METADATA +1 -1
  139. phenoml-0.0.17.dist-info/RECORD +251 -0
  140. phenoml/agent/types/agent_provider.py +0 -7
  141. phenoml/agent/types/provider_type.py +0 -5
  142. phenoml/construe/types/construe_cohort_request_config.py +0 -37
  143. phenoml/construe/types/construe_cohort_response.py +0 -33
  144. phenoml/construe/types/construe_cohort_response_queries_item.py +0 -49
  145. phenoml/tools/types/cohort_request_provider.py +0 -5
  146. phenoml/tools/types/lang2fhir_and_create_request_provider.py +0 -7
  147. phenoml/tools/types/lang2fhir_and_search_request_provider.py +0 -7
  148. phenoml-0.0.2.dist-info/RECORD +0 -153
  149. {phenoml-0.0.2.dist-info → phenoml-0.0.17.dist-info}/WHEEL +0 -0
@@ -0,0 +1,53 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .create_workflow_request_fhir_provider_id import CreateWorkflowRequestFhirProviderId
6
+ from .create_workflow_response import CreateWorkflowResponse
7
+ from .decision_node_definition import DecisionNodeDefinition
8
+ from .execute_workflow_response import ExecuteWorkflowResponse
9
+ from .execute_workflow_response_results import ExecuteWorkflowResponseResults
10
+ from .lang2fhir_create_definition import Lang2FhirCreateDefinition
11
+ from .lang2fhir_search_definition import Lang2FhirSearchDefinition
12
+ from .list_workflows_response import ListWorkflowsResponse
13
+ from .step_operation import StepOperation
14
+ from .sub_workflow_definition import SubWorkflowDefinition
15
+ from .update_workflow_request_fhir_provider_id import UpdateWorkflowRequestFhirProviderId
16
+ from .workflow_config import WorkflowConfig
17
+ from .workflow_definition import WorkflowDefinition
18
+ from .workflow_graph import WorkflowGraph
19
+ from .workflow_response import WorkflowResponse
20
+ from .workflow_response_graph import WorkflowResponseGraph
21
+ from .workflow_step import WorkflowStep
22
+ from .workflow_step_summary import WorkflowStepSummary
23
+ from .workflow_step_summary_type import WorkflowStepSummaryType
24
+ from .workflow_step_type import WorkflowStepType
25
+ from .workflows_delete_response import WorkflowsDeleteResponse
26
+ from .workflows_get_response import WorkflowsGetResponse
27
+ from .workflows_update_response import WorkflowsUpdateResponse
28
+
29
+ __all__ = [
30
+ "CreateWorkflowRequestFhirProviderId",
31
+ "CreateWorkflowResponse",
32
+ "DecisionNodeDefinition",
33
+ "ExecuteWorkflowResponse",
34
+ "ExecuteWorkflowResponseResults",
35
+ "Lang2FhirCreateDefinition",
36
+ "Lang2FhirSearchDefinition",
37
+ "ListWorkflowsResponse",
38
+ "StepOperation",
39
+ "SubWorkflowDefinition",
40
+ "UpdateWorkflowRequestFhirProviderId",
41
+ "WorkflowConfig",
42
+ "WorkflowDefinition",
43
+ "WorkflowGraph",
44
+ "WorkflowResponse",
45
+ "WorkflowResponseGraph",
46
+ "WorkflowStep",
47
+ "WorkflowStepSummary",
48
+ "WorkflowStepSummaryType",
49
+ "WorkflowStepType",
50
+ "WorkflowsDeleteResponse",
51
+ "WorkflowsGetResponse",
52
+ "WorkflowsUpdateResponse",
53
+ ]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CreateWorkflowRequestFhirProviderId = typing.Union[str, typing.List[str]]
@@ -0,0 +1,44 @@
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 .workflow_definition import WorkflowDefinition
8
+ from .workflow_response import WorkflowResponse
9
+
10
+
11
+ class CreateWorkflowResponse(UniversalBaseModel):
12
+ success: typing.Optional[bool] = pydantic.Field(default=None)
13
+ """
14
+ Whether the workflow was created successfully
15
+ """
16
+
17
+ message: typing.Optional[str] = pydantic.Field(default=None)
18
+ """
19
+ Status message
20
+ """
21
+
22
+ workflow_id: typing.Optional[str] = pydantic.Field(default=None)
23
+ """
24
+ ID of the created workflow
25
+ """
26
+
27
+ workflow: typing.Optional[WorkflowResponse] = pydantic.Field(default=None)
28
+ """
29
+ Simplified workflow response with only essential step information
30
+ """
31
+
32
+ workflow_details: typing.Optional[WorkflowDefinition] = pydantic.Field(default=None)
33
+ """
34
+ Only included when verbose=true - contains full implementation details including operation definitions and placeholders
35
+ """
36
+
37
+ if IS_PYDANTIC_V2:
38
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
39
+ else:
40
+
41
+ class Config:
42
+ frozen = True
43
+ smart_union = True
44
+ extra = pydantic.Extra.allow
@@ -6,19 +6,20 @@ import pydantic
6
6
  from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
7
 
8
8
 
9
- class FhirClientConfig(UniversalBaseModel):
9
+ class DecisionNodeDefinition(UniversalBaseModel):
10
+ expression: typing.Optional[str] = pydantic.Field(default=None)
10
11
  """
11
- Provider-specific configuration and metadata
12
+ Simple equality expression for decision logic
12
13
  """
13
14
 
14
- fhir_store_id: typing.Optional[str] = pydantic.Field(default=None)
15
+ paths: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
15
16
  """
16
- FHIR store ID for Google Healthcare provider
17
+ Maps decision outcomes to next step IDs
17
18
  """
18
19
 
19
- on_behalf_of_email: typing.Optional[str] = pydantic.Field(default=None)
20
+ runtime_placeholders: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
20
21
  """
21
- Email address to use for On-Behalf-Of requests (Medplum only). If provided, the request will be made on behalf of the Patient or Practitioner with this email address.
22
+ Maps placeholder tokens to their input data paths for decision evaluation
22
23
  """
23
24
 
24
25
  if IS_PYDANTIC_V2:
@@ -0,0 +1,30 @@
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 .execute_workflow_response_results import ExecuteWorkflowResponseResults
8
+
9
+
10
+ class ExecuteWorkflowResponse(UniversalBaseModel):
11
+ success: typing.Optional[bool] = pydantic.Field(default=None)
12
+ """
13
+ Whether the workflow execution was successful
14
+ """
15
+
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
17
+ """
18
+ Status message with execution details
19
+ """
20
+
21
+ results: typing.Optional[ExecuteWorkflowResponseResults] = None
22
+
23
+ if IS_PYDANTIC_V2:
24
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
25
+ else:
26
+
27
+ class Config:
28
+ frozen = True
29
+ smart_union = True
30
+ extra = pydantic.Extra.allow
@@ -6,15 +6,10 @@ import pydantic
6
6
  from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
7
 
8
8
 
9
- class InternalServerErrorBody(UniversalBaseModel):
10
- status: typing.Optional[int] = pydantic.Field(default=None)
9
+ class ExecuteWorkflowResponseResults(UniversalBaseModel):
10
+ steps: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
11
11
  """
12
- HTTP status code.
13
- """
14
-
15
- message: typing.Optional[str] = pydantic.Field(default=None)
16
- """
17
- Error message.
12
+ Results for each executed workflow step, keyed by step ID
18
13
  """
19
14
 
20
15
  if IS_PYDANTIC_V2:
@@ -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 Lang2FhirCreateDefinition(UniversalBaseModel):
10
+ original_description: typing.Optional[str] = pydantic.Field(default=None)
11
+ """
12
+ Original natural language description
13
+ """
14
+
15
+ resource_type: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ FHIR resource type to create
18
+ """
19
+
20
+ resource_template: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
21
+ """
22
+ Prepared FHIR resource template
23
+ """
24
+
25
+ runtime_placeholders: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
26
+ """
27
+ Maps placeholder tokens to their input data paths
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,42 @@
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 Lang2FhirSearchDefinition(UniversalBaseModel):
10
+ original_query: typing.Optional[str] = pydantic.Field(default=None)
11
+ """
12
+ Original natural language query
13
+ """
14
+
15
+ resource_type: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ FHIR resource type to search
18
+ """
19
+
20
+ search_parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
21
+ """
22
+ Prepared FHIR search parameters
23
+ """
24
+
25
+ required_fields: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
26
+ """
27
+ Fields needed from search results
28
+ """
29
+
30
+ runtime_placeholders: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
31
+ """
32
+ Maps placeholder tokens to their input data paths
33
+ """
34
+
35
+ if IS_PYDANTIC_V2:
36
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
37
+ else:
38
+
39
+ class Config:
40
+ frozen = True
41
+ smart_union = True
42
+ extra = pydantic.Extra.allow
@@ -0,0 +1,39 @@
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 .workflow_definition import WorkflowDefinition
8
+ from .workflow_response import WorkflowResponse
9
+
10
+
11
+ class ListWorkflowsResponse(UniversalBaseModel):
12
+ success: typing.Optional[bool] = pydantic.Field(default=None)
13
+ """
14
+ Whether the workflow list was retrieved successfully
15
+ """
16
+
17
+ message: typing.Optional[str] = pydantic.Field(default=None)
18
+ """
19
+ Status message
20
+ """
21
+
22
+ workflows: typing.Optional[typing.List[WorkflowResponse]] = pydantic.Field(default=None)
23
+ """
24
+ Array of simplified workflow responses for the authenticated user
25
+ """
26
+
27
+ workflow_details: typing.Optional[typing.List[WorkflowDefinition]] = pydantic.Field(default=None)
28
+ """
29
+ Only included when verbose=true - contains full implementation details for all workflows
30
+ """
31
+
32
+ if IS_PYDANTIC_V2:
33
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
34
+ else:
35
+
36
+ class Config:
37
+ frozen = True
38
+ smart_union = True
39
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
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 .decision_node_definition import DecisionNodeDefinition
8
+ from .lang2fhir_create_definition import Lang2FhirCreateDefinition
9
+ from .lang2fhir_search_definition import Lang2FhirSearchDefinition
10
+ from .sub_workflow_definition import SubWorkflowDefinition
11
+
12
+
13
+ class StepOperation(UniversalBaseModel):
14
+ search_definition: typing.Optional[Lang2FhirSearchDefinition] = None
15
+ create_definition: typing.Optional[Lang2FhirCreateDefinition] = None
16
+ workflow_definition: typing.Optional[SubWorkflowDefinition] = None
17
+ decision_definition: typing.Optional[DecisionNodeDefinition] = None
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,32 @@
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 SubWorkflowDefinition(UniversalBaseModel):
10
+ workflow_id: typing.Optional[str] = pydantic.Field(default=None)
11
+ """
12
+ ID of the workflow to execute as a sub-workflow
13
+ """
14
+
15
+ input: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
16
+ """
17
+ Input data to pass to the sub-workflow
18
+ """
19
+
20
+ runtime_placeholders: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
21
+ """
22
+ Maps placeholder tokens to their input data paths for sub-workflow
23
+ """
24
+
25
+ if IS_PYDANTIC_V2:
26
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
27
+ else:
28
+
29
+ class Config:
30
+ frozen = True
31
+ smart_union = True
32
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ UpdateWorkflowRequestFhirProviderId = typing.Union[str, typing.List[str]]
@@ -0,0 +1,27 @@
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 WorkflowConfig(UniversalBaseModel):
10
+ fhir_provider_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
11
+ """
12
+ FHIR provider IDs for executing workflow steps
13
+ """
14
+
15
+ dynamic_generation: typing.Optional[bool] = pydantic.Field(default=None)
16
+ """
17
+ Whether to use dynamic lang2fhir generation instead of pre-populated templates
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
@@ -0,0 +1,57 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .workflow_config import WorkflowConfig
9
+ from .workflow_graph import WorkflowGraph
10
+
11
+
12
+ class WorkflowDefinition(UniversalBaseModel):
13
+ id: typing.Optional[str] = pydantic.Field(default=None)
14
+ """
15
+ Unique identifier for the workflow
16
+ """
17
+
18
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
19
+ """
20
+ ID of the user who created the workflow
21
+ """
22
+
23
+ name: typing.Optional[str] = pydantic.Field(default=None)
24
+ """
25
+ Human-readable name for the workflow
26
+ """
27
+
28
+ workflow_instructions: typing.Optional[str] = pydantic.Field(default=None)
29
+ """
30
+ Natural language instructions that define the workflow logic
31
+ """
32
+
33
+ sample_data: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
34
+ """
35
+ Sample data used for workflow graph generation
36
+ """
37
+
38
+ config: typing.Optional[WorkflowConfig] = None
39
+ graph: typing.Optional[WorkflowGraph] = None
40
+ created_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
41
+ """
42
+ Timestamp when the workflow was created
43
+ """
44
+
45
+ updated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
46
+ """
47
+ Timestamp when the workflow was last updated
48
+ """
49
+
50
+ if IS_PYDANTIC_V2:
51
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
52
+ else:
53
+
54
+ class Config:
55
+ frozen = True
56
+ smart_union = True
57
+ extra = pydantic.Extra.allow
@@ -0,0 +1,23 @@
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 .workflow_step import WorkflowStep
8
+
9
+
10
+ class WorkflowGraph(UniversalBaseModel):
11
+ steps: typing.Optional[typing.List[WorkflowStep]] = pydantic.Field(default=None)
12
+ """
13
+ Ordered list of workflow execution steps
14
+ """
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
18
+ else:
19
+
20
+ class Config:
21
+ frozen = True
22
+ smart_union = True
23
+ extra = pydantic.Extra.allow
@@ -0,0 +1,61 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .workflow_config import WorkflowConfig
9
+ from .workflow_response_graph import WorkflowResponseGraph
10
+
11
+
12
+ class WorkflowResponse(UniversalBaseModel):
13
+ """
14
+ Simplified workflow representation without implementation details
15
+ """
16
+
17
+ id: typing.Optional[str] = pydantic.Field(default=None)
18
+ """
19
+ Unique identifier for the workflow
20
+ """
21
+
22
+ user_id: typing.Optional[str] = pydantic.Field(default=None)
23
+ """
24
+ ID of the user who created the workflow
25
+ """
26
+
27
+ name: typing.Optional[str] = pydantic.Field(default=None)
28
+ """
29
+ Human-readable name for the workflow
30
+ """
31
+
32
+ workflow_instructions: typing.Optional[str] = pydantic.Field(default=None)
33
+ """
34
+ Natural language instructions that define the workflow logic
35
+ """
36
+
37
+ sample_data: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
38
+ """
39
+ Sample data used for workflow graph generation
40
+ """
41
+
42
+ config: typing.Optional[WorkflowConfig] = None
43
+ graph: typing.Optional[WorkflowResponseGraph] = None
44
+ created_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
45
+ """
46
+ Timestamp when the workflow was created
47
+ """
48
+
49
+ updated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
50
+ """
51
+ Timestamp when the workflow was last updated
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,23 @@
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 .workflow_step_summary import WorkflowStepSummary
8
+
9
+
10
+ class WorkflowResponseGraph(UniversalBaseModel):
11
+ steps: typing.Optional[typing.List[WorkflowStepSummary]] = pydantic.Field(default=None)
12
+ """
13
+ Simplified list of workflow steps without operation details
14
+ """
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
18
+ else:
19
+
20
+ class Config:
21
+ frozen = True
22
+ smart_union = True
23
+ extra = pydantic.Extra.allow
@@ -0,0 +1,55 @@
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 .step_operation import StepOperation
8
+ from .workflow_step_type import WorkflowStepType
9
+
10
+
11
+ class WorkflowStep(UniversalBaseModel):
12
+ id: typing.Optional[str] = pydantic.Field(default=None)
13
+ """
14
+ Unique identifier for the step
15
+ """
16
+
17
+ name: typing.Optional[str] = pydantic.Field(default=None)
18
+ """
19
+ Human-readable name for the step
20
+ """
21
+
22
+ description: typing.Optional[str] = pydantic.Field(default=None)
23
+ """
24
+ Detailed description of what the step does
25
+ """
26
+
27
+ type: typing.Optional[WorkflowStepType] = pydantic.Field(default=None)
28
+ """
29
+ Type of operation this step performs
30
+ """
31
+
32
+ operation: typing.Optional[StepOperation] = None
33
+ provider_id: typing.Optional[str] = pydantic.Field(default=None)
34
+ """
35
+ Selected FHIR provider ID for this step
36
+ """
37
+
38
+ dependencies: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
39
+ """
40
+ IDs of steps this step depends on
41
+ """
42
+
43
+ dynamic_generation: typing.Optional[bool] = pydantic.Field(default=None)
44
+ """
45
+ Whether to use dynamic lang2fhir generation for this step
46
+ """
47
+
48
+ if IS_PYDANTIC_V2:
49
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
50
+ else:
51
+
52
+ class Config:
53
+ frozen = True
54
+ smart_union = True
55
+ extra = pydantic.Extra.allow
@@ -0,0 +1,47 @@
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 .workflow_step_summary_type import WorkflowStepSummaryType
8
+
9
+
10
+ class WorkflowStepSummary(UniversalBaseModel):
11
+ """
12
+ Simplified workflow step without implementation details
13
+ """
14
+
15
+ id: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ Unique identifier for the step
18
+ """
19
+
20
+ name: typing.Optional[str] = pydantic.Field(default=None)
21
+ """
22
+ Human-readable name for the step
23
+ """
24
+
25
+ description: typing.Optional[str] = pydantic.Field(default=None)
26
+ """
27
+ Detailed description of what the step does
28
+ """
29
+
30
+ type: typing.Optional[WorkflowStepSummaryType] = pydantic.Field(default=None)
31
+ """
32
+ Type of operation this step performs
33
+ """
34
+
35
+ provider_id: typing.Optional[str] = pydantic.Field(default=None)
36
+ """
37
+ Selected FHIR provider ID for this step
38
+ """
39
+
40
+ if IS_PYDANTIC_V2:
41
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
42
+ else:
43
+
44
+ class Config:
45
+ frozen = True
46
+ smart_union = True
47
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ WorkflowStepSummaryType = typing.Union[typing.Literal["search", "create", "workflow", "decision_node"], typing.Any]