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.0.tar.gz (102.9 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.0-py3-none-any.whl (179.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opendental_sdk-1.2.0.tar.gz
  • Upload date:
  • Size: 102.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for opendental_sdk-1.2.0.tar.gz
Algorithm Hash digest
SHA256 4026537a39a07eef5da55b22d8cf337ee04432e599734460ab9570422b63eb9b
MD5 6aef1aee7a4076681748ca361db13123
BLAKE2b-256 6074cd4f9df6a472feefa9c226c166dcfd7c0382e0ae095075fd7573b9969226

See more details on using hashes here.

File details

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

File metadata

  • Download URL: opendental_sdk-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 179.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for opendental_sdk-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c0920feb4c36e529f420dfee1b07af138c890a24a90f02bc37aaef361cb21133
MD5 45292f2daf56d8af59e4f4931ce63eb7
BLAKE2b-256 b3e2b4306ba01d0c5b5a67026b4eece06aba712152b3598bb54ef14b78a80a65

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