from ekacare import EkaCareClient
import base64
import time
def ekascribe_integration_example():
try:
# Initialize the client
client = EkaCareClient(
client_id="your_client_id",
client_secret="your_client_secret"
)
# Authenticate
authenticate_client(client)
# Upload audio files
transaction_id = "unique_transaction_id"
upload_audio_files(client, transaction_id)
# NOTE: At this point, wait for the webhook callback
# This would typically be handled by your web server
# Once webhook is received, fetch results
# The session_id would come from the webhook payload
session_id = transaction_id # "session_id_from_webhook"
get_transcription_results(client, session_id)
except Exception as e:
print(f"Error: {str(e)}")
def authenticate_client(client):
token_response = client.auth.login()
client.set_access_token(token_response["access_token"])
def upload_audio_files(client, transaction_id):
audio_files = [
"path/to/audio1.mp3",
"path/to/audio2.mp3"
]
extra_data = {
"mode": "dictation",
"model_type": "lite"
}
action = "ekascribe-v2"
responses = client.v2rx.upload(
file_paths=audio_files,
txn_id=transaction_id,
action=action,
extra_data=extra_data,
output_format = {
"input_language": ["en-IN"],
"output_template": [
{
"template_id": "clinical_notes_template",
"codification_needed": True
}]
}
)
return responses
def get_transcription_results(client, session_id):
action = "ekascribe-v2"
session_status = client.v2rx.get_session_status(session_id, action)
if "data" in session_status and "output" in session_status["data"] and "fhir" in session_status["data"]["output"]:
encoded_fhir = session_status["data"]["output"]["fhir"]
decoded_bytes = base64.b64decode(encoded_fhir)
fhir_json = decoded_bytes.decode('utf-8')
return fhir_json
else:
# Handle non-completed status
return None
if __name__ == "__main__":
ekascribe_integration_example()