Skip to main content

Simple, domain-driven Python SDK for Open Dental API with full type safety

Project description

Open Dental Python SDK

A comprehensive Python SDK for the Open Dental API, providing 100% endpoint coverage, type safety, and easy integration with your Python applications.

Installation

Install the SDK using your preferred Python package manager:

pip

pip install opendental-sdk

rye

rye add opendental-sdk

uv

uv pip install opendental-sdk

Quick Start

from opendental import OpenDentalClient

# Initialize the client with your API keys
client = OpenDentalClient(
    developer_key="your_developer_key_here",
    customer_key="your_customer_key_here"
)

# Or use environment variables
# export OPENDENTAL_DEVELOPER_KEY=your_developer_key_here
# export OPENDENTAL_CUSTOMER_KEY=your_customer_key_here
client = OpenDentalClient()

# Get all patients
patients = client.patients.get()

# Get a specific patient
patient = client.patients.get(patient_id=123)

# Create a new patient
new_patient = client.patients.create({
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com"
})

# Update a patient
updated_patient = client.patients.update(123, {
    "email": "newemail@example.com"
})

# Delete a patient
client.patients.delete(123)

Authentication

The Open Dental API requires both a Developer API Key and a Customer API Key. You can obtain these from the Open Dental Developer Portal.

Set your keys in one of the following ways:

  1. Environment Variables (Recommended):
export OPENDENTAL_DEVELOPER_KEY=your_developer_key
export OPENDENTAL_CUSTOMER_KEY=your_customer_key
  1. Direct Initialization:
client = OpenDentalClient(
    developer_key="your_developer_key",
    customer_key="your_customer_key"
)

Error Handling

The SDK provides comprehensive error handling:

from opendental import OpenDentalClient, OpenDentalAPIError

try:
    client = OpenDentalClient()
    patients = client.patients.get()
except OpenDentalAPIError as e:
    print(f"API Error: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")

Available Resources

The SDK provides access to all Open Dental API resources:

  • Patients: client.patients
  • Appointments: client.appointments
  • Procedures: client.procedures
  • Insurance: client.insurance
  • Billing: client.billing
  • And many more...

Configuration

You can customize the client behavior:

client = OpenDentalClient(
    developer_key="your_key",
    customer_key="your_key",
    base_url="https://api.opendental.com",  # Custom API base URL
    timeout=30  # Request timeout in seconds
)

Type Safety

The SDK includes full type annotations and supports modern Python type checking:

from opendental import OpenDentalClient
from opendental.models import Patient

client: OpenDentalClient = OpenDentalClient()
patient: Patient = client.patients.get(123)

Development

To set up the development environment:

git clone https://github.com/opendental/python-sdk
cd python-sdk/python
pip install -e ".[dev]"

Running Tests

pytest

Code Formatting

black src/
isort src/

Type Checking

mypy src/

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support and questions:

HIPAA Compliance

⚠️ Important: This SDK handles sensitive patient data. Ensure you have a Business Associate Agreement (BAA) in place with Open Dental and follow all HIPAA compliance requirements when using this SDK in production.

Using uv for Dependency Management

We recommend using uv for fast dependency management and environment setup.

Install uv

You can install uv with pipx:

pipx install uv

Or with Homebrew (on macOS):

brew install astral-sh/uv/uv

Create a Virtual Environment and Install Dependencies

uv venv .venv
source .venv/bin/activate
uv pip install -r requirements.txt

Or install directly from pyproject.toml:

uv pip install -r <(uv pip compile pyproject.toml)

Running Tests

uv pip install -r requirements.txt --extra dev
pytest

For more, see the uv documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opendental_sdk-1.2.6.tar.gz (112.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opendental_sdk-1.2.6-py3-none-any.whl (194.5 kB view details)

Uploaded Python 3

File details

Details for the file opendental_sdk-1.2.6.tar.gz.

File metadata

  • Download URL: opendental_sdk-1.2.6.tar.gz
  • Upload date:
  • Size: 112.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for opendental_sdk-1.2.6.tar.gz
Algorithm Hash digest
SHA256 79d7588b4378327d0fa6bffbcb0cac76cb9ab308451e613d9b6e108b9114148d
MD5 536c55a923511d467a0fcbe35abd702b
BLAKE2b-256 e835e03c9709ad915e377a78454e08700d218040c5df6becefda07230bbe9d64

See more details on using hashes here.

File details

Details for the file opendental_sdk-1.2.6-py3-none-any.whl.

File metadata

  • Download URL: opendental_sdk-1.2.6-py3-none-any.whl
  • Upload date:
  • Size: 194.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for opendental_sdk-1.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 20997486441d37f72035cd8321b3e6750618b9a5cebf0e78ca74b15958fbf279
MD5 367ff3c96a6727940c3b88794639d334
BLAKE2b-256 1141b77de2dc3cf2c56ad9732e7b379bf666c4b6a0e570801f298e450aad8830

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page