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(
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"
)
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.
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.1.3.tar.gz
(19.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ekacare-0.1.3-py3-none-any.whl
(24.0 kB
view details)
File details
Details for the file ekacare-0.1.3.tar.gz.
File metadata
- Download URL: ekacare-0.1.3.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd343501060a46e8f5e3327a54789615b7a6c5659bc2fad2d2653d0a9ff5bffc
|
|
| MD5 |
94896d711ae70a6c520151be9273531e
|
|
| BLAKE2b-256 |
e2b302a5a60f8a5849fd8b808c44220e059c4178bd7b7d58866cd2ddf1d381c3
|
File details
Details for the file ekacare-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ekacare-0.1.3-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e2e9733c6dadfccf0c224905cb070434dbe554c4ddb2fa82a314591c1030075
|
|
| MD5 |
33ca5985f8edb4ddc1563c33830ec13b
|
|
| BLAKE2b-256 |
966ccaa1b8d4e48fd841e5363bb0062f3ce8303da96af742fe44159afd4e5a8a
|