Base¶
BaseService ¶
BaseService(config: ClientConfig, timeout: Optional[int] = 6000000, headers: Optional[dict[str, str]] = None)
Bases: ABC
Abstract base class for API service clients.
Handles HTTP requests, authentication, error management, and resource cleanup. Subclasses should use this as a foundation for implementing specific API services.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
ClientConfig
|
Configuration containing API URL and authentication details. |
required |
timeout
|
Optional[int]
|
Timeout for requests in milliseconds (default: 6000000). |
6000000
|
headers
|
Optional[dict[str, str]]
|
Additional headers to include in the request. |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If required configuration values are missing. |
Initializes the BaseService with API configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
ClientConfig
|
Configuration containing API URL and authentication details. |
required |
timeout
|
Optional[int]
|
Timeout for requests (default: 6000000 milliseconds). |
6000000
|
headers
|
Optional[dict[str, str]]
|
Additional headers to include in the request. |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If required configuration values are missing. |
from_config
classmethod
¶
from_config(config: ClientConfig, timeout: Optional[int] = 10) -> BaseService
Factory method to create a BaseService instance from configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
ClientConfig
|
Configuration object. |
required |
timeout
|
Optional[int]
|
Timeout for requests. |
10
|
Returns:
| Name | Type | Description |
|---|---|---|
BaseService |
BaseService
|
An instance of the service. |
get
async
¶
get(endpoint: str, response_model: Type[ResT], query_params: Optional[dict[str, Any]] = None) -> ResT
Makes a GET request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
endpoint
|
str
|
API endpoint. |
required |
response_model
|
Type[ResT]
|
Pydantic model to parse the response. |
required |
query_params
|
Optional[dict[str, Any]]
|
Query parameters. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
ResT |
ResT
|
Parsed response as a Pydantic model. |
post
async
¶
post(endpoint: str, data: dict[str, Any], response_model: Type[ResT]) -> ResT
Makes a POST request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
endpoint
|
str
|
API endpoint. |
required |
data
|
dict[str, Any]
|
JSON payload. |
required |
response_model
|
Type[ResT]
|
Pydantic model to parse the response. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ResT |
ResT
|
Parsed response as a Pydantic model. |
put
async
¶
put(endpoint: str, data: dict[str, Any], response_model: Type[ResT]) -> ResT
Makes a PUT request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
endpoint
|
str
|
API endpoint. |
required |
data
|
dict[str, Any]
|
JSON payload. |
required |
response_model
|
Type[ResT]
|
Pydantic model to parse the response. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ResT |
ResT
|
Parsed response as a Pydantic model. |
delete
async
¶
delete(endpoint: str, response_model: Optional[Type[ResT]] = None) -> Optional[ResT]
Makes a DELETE request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
endpoint
|
str
|
API endpoint. |
required |
response_model
|
Optional[Type[ResT]]
|
Pydantic model to parse the response. |
None
|
Returns:
| Type | Description |
|---|---|
Optional[ResT]
|
Optional[ResT]: Parsed response as a Pydantic model, or None. |
base_types ¶
ClientConfig ¶
ClientConfig(api_key: str, x_hpr_id: Optional[str] = None, api_url: Optional[str] = None)
Configuration object for initializing API clients.
Attributes:
| Name | Type | Description |
|---|---|---|
api_key |
str
|
The API key used for authenticating requests. |
hprid_auth |
Optional(str
|
The HPR ID or additional authentication header value. |
api_url |
Optional(str
|
The base URL of the API endpoint. |
ApiResponse ¶
ApiResponse(data: Any, status: int, message: str)
Standardized structure for API responses.
Attributes:
| Name | Type | Description |
|---|---|---|
data |
Any
|
The response payload or data returned from the API. |
status |
int
|
The HTTP status code or custom status indicator. |
message |
str
|
Informational or error message related to the response. |
errors ¶
EhrApiError ¶
EhrApiError(message: str, status_code: Optional[int] = None, data: Optional[Any] = None)
Bases: Exception
Custom exception for errors returned by the EHR API.
Attributes:
| Name | Type | Description |
|---|---|---|
message |
str
|
The main error message. |
status_code |
Optional[int]
|
HTTP status code or custom error code. |
data |
Optional[Any]
|
Additional data or error details from the API response. |
Provides enhanced string representation to extract and display detailed error messages from nested API responses, including JSON-formatted error payloads.
AuthenticationError ¶
AuthenticationError(message: str = 'Authentication failed')
Bases: EhrApiError
Exception raised for authentication failures.
Attributes:
| Name | Type | Description |
|---|---|---|
message |
str
|
The error message (default: |
status_code |
int
|
HTTP status code for authentication errors (401). |
name |
str
|
Name of the error type. |
ValidationError ¶
ValidationError(message: str)
Bases: EhrApiError
Exception raised for validation errors.
Attributes:
| Name | Type | Description |
|---|---|---|
message |
str
|
The error message. |
status_code |
int
|
HTTP status code for validation errors (400). |
name |
str
|
Name of the error type. |