Skip to main content

Python SDK for Eka Care APIs

Project description

Eka Care SDK for Python

A comprehensive Python SDK for interacting with the Eka Care APIs.

Installation

pip install ekacare

Features

The SDK provides easy access to the following Eka Care APIs:

  • Authentication
  • Records Management (upload, list, update, delete)
  • ABDM Connect (profile, consents, care contexts)
  • Appointment Management
  • Doctor & Clinic Management
  • Patient Management
  • Webhooks (register, manage, verify)
  • Vitals (update patient vitals)
  • Medical Document Parsing
  • Assessment APIs
  • Notifications
  • Privacy Management

Quick Start

Authentication

from ekacare import EkaCareClient

# Initialize with client credentials
client = EkaCareClient(
    client_id="your_client_id",
    client_secret="your_client_secret"
)

# Or initialize with an existing access token
client = EkaCareClient(
    client_id="your_client_id",
    client_secret="your_client_secret",
    access_token="your_access_token"
)

# Manually get an access token
token_response = client.auth.login()
access_token = token_response["access_token"]

Records Management

# Upload a document
response = client.records.upload_document(
    file_path="/path/to/lab_report.pdf",
    document_type="lr",  # lab report
    tags=["covid", "test"],
    title="COVID-19 Test Report"
)
document_id = response["document_id"]

# List documents
documents = client.records.list_documents()
for doc in documents.get("items", []):
    print(doc["record"]["item"]["document_id"])

# Get a specific document
document = client.records.get_document(document_id)

# Update a document
client.records.update_document(
    document_id=document_id,
    document_type="ps",  # prescription
    tags=["medication"]
)

# Delete a document
client.records.delete_document(document_id)

# Retrieve health records in FHIR format
records = client.records.retrieve_health_records(
    identifier="care_context_123",
    hip_id="hip123",
    health_id="user@abdm"
)

Vitals Management

# Create vital records
heart_rate = client.vitals.create_heart_rate_vital(
    value=75,
    measured_at="2023-01-01T12:00:00"
)

blood_glucose = client.vitals.create_blood_glucose_vital(
    value=120,
    measured_at="2023-01-01T08:00:00",
    glucose_type="fasting"
)

blood_oxygen = client.vitals.create_blood_oxygen_vital(
    value=98,
    measured_at="2023-01-01T12:30:00"
)

blood_pressure = client.vitals.create_blood_pressure_vital(
    systolic=120,
    diastolic=80,
    measured_at="2023-01-01T14:45:00"
)

# Update patient vitals
client.vitals.update_vitals(
    txn_id="transaction_id",
    vitals_data=[heart_rate, blood_glucose, blood_oxygen] + blood_pressure
)

Webhooks

# Register a webhook
response = client.webhooks.register_webhook(
    endpoint="https://your-app.com/webhook",
    scopes=["appointment.created", "prescription.created"],
    signing_key="your_secret_key"
)
webhook_id = response["id"]

# Get all webhooks
webhooks = client.webhooks.get_webhooks()

# Update a webhook's signing key
client.webhooks.update_webhook(
    webhook_id=webhook_id,
    signing_key="new_secret_key"
)

# Delete a webhook
client.webhooks.delete_webhook(webhook_id)

# Verify a webhook signature
is_valid = client.webhooks.verify_signature(
    payload=webhook_payload,
    signature=webhook_signature,
    secret_key="your_secret_key"
)

Appointment Management

# Get Appointment Details
response = client.appointments.get_appointment_details("YOUR_APPOINTMENT_ID")

Doctor & Clinic Management

# Get Clinic Details
response = client.clinic_doctor.get_clinic_details("YOUR_CLINIC_ID")


# Get Doctor Details
response = client.clinic_doctor.get_doctor_details("YOUR_DOCTOR_ID")

Appointment Management

# Get Appointment Details
response = client.appointments.get_appointment_details("YOUR_APPOINTMENT_ID")

Patient Details

# Get Patient Details
response = client.patient.get_patient("YOUR_PATIENT_ID")

ABDM Profile Management

# Get ABHA profile
profile = client.abdm_profile.get_profile()
print(profile["abha_address"])

# Update profile
client.abdm_profile.update_profile({
    "address": "123 Main St",
    "pincode": "110001"
})

# Get ABHA card
card_image = client.abdm_profile.get_abha_card()
with open("abha_card.png", "wb") as f:
    f.write(card_image)

# Get QR code data
qr_data = client.abdm_profile.get_abha_qr_code()

# Initiate KYC
response = client.abdm_profile.initiate_kyc(
    method="abha-number",
    identifier="1234-5678-9012"
)
txn_id = response["txn_id"]

# Verify KYC OTP
client.abdm_profile.verify_kyc_otp(
    txn_id=txn_id,
    otp="123456"
)

Assessments

# Start an assessment
import json
context = json.loads(
    {
        "name": "Rakesh",
        "city": "Pune"
    }
)
first_question_form = client.assessment.start(
    age=20, 
    gender="M", 
    workflow_id=4002,
    practitioner_uuid="example_pract_uuid_123",
    patient_uuid="example_patient_uuid_123",
    unique_identifier="example_unique_id_123",
    context=context
)

# Continue the assessment (answer first question and get next question)
ids_list = ["abc", "def"]  # for multi-select type question
first_response = response(  # format the user's choices
    question=first_question 
    answer=answer
)
# Get next question
client.assessment.next(
    qid=0, 
    user_response=first_response
)

# Submit the assessment at the end
client.assessment.submit()

Error Handling

The SDK uses custom exceptions to handle errors:

from ekacare import EkaCareClient, EkaCareAPIError, EkaCareAuthError

client = EkaCareClient(
    client_id="your_client_id",
    client_secret="your_client_secret"
)

try:
    documents = client.records.list_documents()
except EkaCareAuthError as e:
    print(f"Authentication error: {e}")
except EkaCareAPIError as e:
    print(f"API error: {e}")

License

This SDK is distributed under the MIT License.

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

ekacare-0.0.5.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

ekacare-0.0.5-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file ekacare-0.0.5.tar.gz.

File metadata

  • Download URL: ekacare-0.0.5.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ekacare-0.0.5.tar.gz
Algorithm Hash digest
SHA256 d1b789682a562f5383e583ce391a2be9020a7d5ffd025eaef2276082d1e1f81a
MD5 47fe3aed630711c8e052a231862c1012
BLAKE2b-256 13980461ae9c234661481ee25f118f9aa74279e9986d39a42eb4d20f444b839e

See more details on using hashes here.

File details

Details for the file ekacare-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: ekacare-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ekacare-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 452b40502f9c852b10d7aeaa49aee51c1b79479b536c6e4a5bff0241bf2ecf6a
MD5 8a6819cae46a021e0095bb68b39b7282
BLAKE2b-256 9666ef5d56a14dd9561e5eae3488a8a23bda50cd17116c84f903464e5e8e0562

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