Skip to main content

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

Project description

Open Dental Python SDK (WIP)

This is a work in progress and may not be fully functional

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-0.0.2.tar.gz (74.0 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-0.0.2-py3-none-any.whl (142.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for opendental_sdk-0.0.2.tar.gz
Algorithm Hash digest
SHA256 154cd942ec413100f559adb9d1657d3407edf33a0505d896d6870b591efb92c7
MD5 171b030977ee667f8e0ece13d3cdcc69
BLAKE2b-256 a2682a97e941f40efc31419f08b07d9660ffc8b22adf9f12bea9f759ccd4d77e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: opendental_sdk-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 142.4 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-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b83ba1e361804b31f7784f698d4fcf7c1eec5736cb6664c73249e4b9d6b8cf1e
MD5 c2062dd782335a230b272badc5d25f1e
BLAKE2b-256 943bce339edafdd3a3f720f7beb802563bef47376fa1f6c21ad2cbeffc7418a1

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