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.1.9.tar.gz (101.1 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.1.9-py3-none-any.whl (175.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opendental_sdk-1.1.9.tar.gz
  • Upload date:
  • Size: 101.1 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.1.9.tar.gz
Algorithm Hash digest
SHA256 3d60ddd8f00ff2f6faccac724b9d6f2426479b8b05d1c1a4728052f79251b10a
MD5 42410238af6172537b32e56d1e81401d
BLAKE2b-256 1e0c28e927b020eba5be2f6f50c3b31e765067c43f8b885af00012ab5aefb7a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: opendental_sdk-1.1.9-py3-none-any.whl
  • Upload date:
  • Size: 175.8 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.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9c59f2c63f3d49fb4f991410468576049092775bbf4b3e6a84134dd0130a24d3
MD5 ab445e5dfa9c9002e5f8a08a48210da1
BLAKE2b-256 963cfda6748c459be2bb0e10e94f15800fd09c7531911e0246808c5aed76971c

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