Python SDK

SynThera SDK for Python developers

SynThera Python SDK

The SynThera Python SDK provides a comprehensive interface for integrating advanced clinical AI capabilities into your Python applications. Built for healthcare developers, data scientists, and researchers who need reliable, scalable access to medical AI services.

Quick Installation

pip install synthera-sdk

Get started immediately with pip installation and our comprehensive documentation.

Installation & Setup

System Requirements

  • Python 3.8 or higher
  • Requests library (automatically installed)
  • Optional: NumPy and Pandas for data processing

Installation Options

Standard Installation
pip install synthera-sdk
With ML Dependencies
pip install synthera-sdk[ml]

Quick Start Example

from synthera import SynTheraClient
import asyncio

# Initialize the client
client = SynTheraClient(
    api_key="your-api-key-here",
    environment="production"  # or "sandbox" for testing
)

async def analyze_patient_data():
    # Clinical analysis example
    patient_data = {
        "demographics": {
            "age": 45,
            "gender": "F",
            "medical_history": ["hypertension", "diabetes"]
        },
        "vitals": {
            "blood_pressure": "140/90",
            "heart_rate": 88,
            "temperature": 98.6
        },
        "chief_complaint": "Chest pain and shortness of breath"
    }
    
    # Get clinical insights
    analysis = await client.clinical.analyze(patient_data)
    
    print(f"Risk Score: {analysis.risk_score}")
    print(f"Recommendations: {analysis.recommendations}")
    print(f"Differential Diagnosis: {analysis.differential_diagnosis}")

# Run the analysis
asyncio.run(analyze_patient_data())

This example demonstrates basic patient data analysis. The SDK supports both synchronous and asynchronous operations.

Clinical Intelligence

# Clinical decision support result = await client.clinical.analyze({ "symptoms": ["fever", "cough"], "labs": {"wbc": 12000, "crp": 15}, "imaging": "chest_xray_url" }) # Access structured results print(result.primary_diagnosis) print(result.confidence_score) print(result.treatment_recommendations)

Voice Processing

# Medical speech-to-text transcription = await client.voice.transcribe( audio_file="consultation.wav", language="en-US", specialty="cardiology" ) # Generate SOAP notes soap_note = await client.voice.generate_soap( transcription_id=transcription.id ) print(soap_note.formatted_note)

API Reference

Clinical Module

client.clinical.analyze()
client.clinical.risk_score()
client.clinical.drug_interactions()
client.clinical.guidelines()

Voice Module

client.voice.transcribe()
client.voice.generate_soap()
client.voice.extract_entities()
client.voice.streaming_transcribe()

Imaging Module

client.imaging.analyze()
client.imaging.detect_anomalies()
client.imaging.measure()
client.imaging.compare()

Lab Module

client.lab.interpret()
client.lab.trends()
client.lab.reference_ranges()
client.lab.critical_values()

FHIR Module

client.fhir.patient()
client.fhir.observation()
client.fhir.condition()
client.fhir.medication()

Utility Functions

client.utils.validate_data()
client.utils.anonymize()
client.utils.export_report()
client.utils.health_check()

Advanced Usage Examples

Batch Processing

# Process multiple patients efficiently
async def batch_analysis(patient_list):
    tasks = []
    for patient in patient_list:
        task = client.clinical.analyze(patient)
        tasks.append(task)
    
    # Execute all analyses concurrently
    results = await asyncio.gather(*tasks)
    
    # Process results
    for i, result in enumerate(results):
        print(f"Patient {i+1}: Risk Score = {result.risk_score}")
        
    return results

# Usage
patients = load_patient_data("patients.json")
results = await batch_analysis(patients)

Streaming Voice Processing

# Real-time voice processing
async def stream_processing():
    async with client.voice.streaming_session() as stream:
        # Configure for real-time transcription
        await stream.configure(
            language="en-US",
            specialty="emergency_medicine",
            return_interim_results=True
        )
        
        # Process audio chunks
        async for audio_chunk in get_audio_stream():
            await stream.send_audio(audio_chunk)
            
            # Get real-time results
            if stream.has_result():
                result = await stream.get_result()
                print(f"Transcription: {result.text}")
                
                if result.is_final:
                    # Extract clinical entities
                    entities = await client.voice.extract_entities(result.text)
                    print(f"Entities: {entities}")

await stream_processing()

Error Handling & Best Practices

from synthera.exceptions import (
    SynTheraAPIError,
    AuthenticationError,
    RateLimitError,
    ValidationError
)

async def robust_analysis(patient_data):
    try:
        # Validate data before sending
        validated_data = client.utils.validate_data(patient_data)
        
        # Perform analysis with retry logic
        result = await client.clinical.analyze(
            validated_data,
            timeout=30,
            retry_count=3
        )
        
        return result
        
    except AuthenticationError:
        print("Invalid API credentials")
        
    except RateLimitError as e:
        print(f"Rate limit exceeded. Retry after {e.retry_after} seconds")
        await asyncio.sleep(e.retry_after)
        return await robust_analysis(patient_data)
        
    except ValidationError as e:
        print(f"Data validation failed: {e.details}")
        
    except SynTheraAPIError as e:
        print(f"API error: {e.message}")
        
    except Exception as e:
        print(f"Unexpected error: {e}")
        
    return None

Configuration Options

Environment Configuration

# Using environment variables
import os
client = SynTheraClient(
    api_key=os.getenv("SYNTHERA_API_KEY"),
    environment=os.getenv("SYNTHERA_ENV", "production"),
    region=os.getenv("SYNTHERA_REGION", "us-east-1")
)

# Using configuration file
client = SynTheraClient.from_config("config.yaml")

Advanced Settings

client = SynTheraClient(
    api_key="your-key",
    timeout=60,
    max_retries=3,
    rate_limit=100,  # requests per minute
    debug=True,
    proxy="http://proxy:8080",
    verify_ssl=True
)

Additional Resources

API Documentation

Complete REST API reference

GitHub Repository

Source code and examples

PyPI Package

Official Python package

Community Support

Get help from other developers