Skip to content

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.

close async

close() -> None

Closes the HTTP client session.

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: Authentication failed).

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.