Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
f6c22de
Added the whitelist domain of bucket (#427)
durgeshateka Nov 13, 2025
9abc581
updated documentation with configurable org icons (#428)
nishantmourya-eka Nov 13, 2025
d41f574
changed desc text for urls in abha doc (#429)
nishantmourya-eka Nov 14, 2025
8376c4b
push (#430)
Samudranil31 Nov 19, 2025
961de66
update doc for cc link (#431)
shyamvlmna Nov 19, 2025
54508d0
status codes (#433)
Samudranil31 Nov 20, 2025
0d3a497
get hip users api (#434)
nadeem-ekacare Nov 24, 2025
6503910
abha search (#437)
shyamvlmna Nov 26, 2025
cc5ff52
Feature/abd 9 (#438)
shyamvlmna Nov 26, 2025
a6dd635
Feature/abd 9 (#439)
shyamvlmna Nov 26, 2025
5f61358
Sachin/webhook documentation (#435)
sachinjaiswal-eka Nov 26, 2025
b6b6f32
Added the output_language in documentation (#440)
durgeshateka Nov 28, 2025
8a89500
Durgesh/output language (#441)
durgeshateka Nov 28, 2025
2ec154e
[MED-14] Update MR upload documentation to state tags are treated as …
neelimasingh849 Dec 2, 2025
14344b0
No-Show Appointment api added
Samudranil31 Dec 3, 2025
bb15f65
No-Show Appointment (#443)
Samudranil31 Dec 3, 2025
b886061
push (#444)
Samudranil31 Dec 3, 2025
2a7d631
payload change in no show api (#445)
Samudranil31 Dec 4, 2025
e02f1b4
fhir-structure docs added (#446)
durgeshateka Dec 4, 2025
3a51b2c
medication request added (#447)
durgeshateka Dec 8, 2025
e9121e4
Durgesh/medicationrequest add (#448)
durgeshateka Dec 8, 2025
70b3cca
added type field for the mcert webhook (#449)
sachinjaiswal-eka Dec 10, 2025
299c366
Response added Create (#450)
rohit19872 Dec 11, 2025
f13fe58
updated ekascribe TS SDK docs (#451)
Sanikagoyal Dec 11, 2025
a5002b0
Added the resources in fhir structure (#453)
durgeshateka Dec 17, 2025
9676720
Added the system requirements in ekascribe (#454)
durgeshateka Dec 17, 2025
6518e1f
Durgesh/system req (#455)
durgeshateka Dec 17, 2025
ccc2439
Eka Care MCP documentation with integration steps (#456)
mayank-garg-eka Dec 18, 2025
4216a53
removed getTemplateOutput method (#457)
Sanikagoyal Dec 19, 2025
cad6ae8
fixed documentation and added console
vikalp Dec 22, 2025
9d83502
Abha sdk doc update (#458)
nishantmourya-eka Dec 24, 2025
3c31562
[ENG-168] nhpr documentation (#459)
neelimasingh849 Jan 2, 2026
e682e67
added skip abha option,hip id in abha sdk (#462)
nishantmourya-eka Jan 7, 2026
d19114d
Ekascribe android sdk updated (#463)
divyesh11 Jan 8, 2026
4f43c70
Update the existing iOS document (#465)
BRUNDAB19B Jan 9, 2026
6e3648d
updated callback docs (#466)
Sanikagoyal Jan 9, 2026
6d822a9
updated ts docs (#468)
Sanikagoyal Jan 12, 2026
3db990b
Update the eka scribe new architecture doc (#469)
BRUNDAB19B Jan 15, 2026
5d41a02
added changes regarding assessment sdk (#470)
durgeshateka Jan 20, 2026
c2f5ce5
Face Auth (#471)
rohit19872 Jan 21, 2026
efd4f40
Added python sdk for report parsing
vishal24tuniki Jan 21, 2026
a40c2a0
updated doc
vishal24tuniki Jan 22, 2026
808d40c
updated docs
vishal24tuniki Jan 22, 2026
6dd6aae
add java sdk doc
vishal24tuniki Jan 22, 2026
97cd64b
added documentation for classification (#473)
neelimasingh849 Jan 22, 2026
8579500
Removed required from dt (#474)
neelimasingh849 Jan 22, 2026
93dd625
Status Session API (#472)
rohit19872 Jan 22, 2026
3886394
temporarily removed parsed report (#476)
neelimasingh849 Jan 23, 2026
807204a
added documentation for the get business information api (#475)
sachinjaiswal-eka Jan 23, 2026
8a0575d
removed fhir (#477)
neelimasingh849 Jan 23, 2026
ece75bb
Sachin/hub 296 documentation for business api (#478)
sachinjaiswal-eka Jan 23, 2026
ad33060
added changes regarding assessment flow structure and inhancement (#479)
durgeshateka Jan 23, 2026
1582034
abdm sdk (#481)
shyamvlmna Jan 23, 2026
be7d0b0
complete fhir bundle example added (#482)
durgeshateka Jan 23, 2026
6b60f88
Updating eka care developer portal (#484)
BRUNDAB19B Jan 27, 2026
6c14806
added documentation for onboarding apis (#480)
sachinjaiswal-eka Jan 27, 2026
78bedc1
Sachin/hub 282 onboarding apis documentation (#485)
sachinjaiswal-eka Jan 27, 2026
00fc471
New branch => changes regarding main doc tab (#487)
priyankadvekacare Jan 27, 2026
51acaf6
made unique_identifier as medentory for doctor initiated assessment (…
durgeshateka Jan 28, 2026
9c3d837
Auth docs update (#483)
piyush-at-eka Jan 28, 2026
2928dd3
Auto login docs (#489)
rohit19872 Jan 28, 2026
4e110c4
Redirect to console (#490)
piyush-at-eka Jan 29, 2026
8768da4
Add step for using token (#491)
piyush-at-eka Jan 29, 2026
eb7e90c
Echo Agent Kit (#492)
dicodetomy-paradox Jan 29, 2026
83c089c
get started changes
priyankadvekacare Feb 2, 2026
8798a95
refactor records sdk docs (#493)
Gajendra8911 Feb 2, 2026
d7f4fa0
remove deprecated query params
vishal24tuniki Feb 2, 2026
55784f2
make document type string instead of enum
vishal24tuniki Feb 2, 2026
f9e5654
rename path param
vishal24tuniki Feb 2, 2026
87ef6b3
Update in missed occurences
vishal24tuniki Feb 2, 2026
b3481d9
rename add record title (#496)
vishal24tuniki Feb 2, 2026
c370e30
product details added
priyankadvekacare Feb 2, 2026
0c74df2
remove records sdk
vishal24tuniki Feb 2, 2026
60eb558
updated docs - update output (#499)
Sanikagoyal Feb 3, 2026
96ae716
Ip allowlist (#464)
orbi-ci-bot Feb 3, 2026
22f43b5
NHPR Docs fix (#498)
rohit19872 Feb 3, 2026
b8f4f98
Invite flow changes (#500)
piyush-at-eka Feb 6, 2026
7833376
Add link for visiting dev console (#501)
piyush-at-eka Feb 6, 2026
cb63d2f
eka medai links added (#502)
priyankadvekacare Feb 9, 2026
c56fe3b
added more details fields for the oboarding apis (#503)
sachinjaiswal-eka Feb 10, 2026
85cc8af
models/spotlight/dataset new data added
priyankadvekacare Feb 13, 2026
13f4343
next line
priyankadvekacare Feb 13, 2026
3d7f507
space added
priyankadvekacare Feb 13, 2026
2c8820c
Sachin/onboarding api changes (#506)
sachinjaiswal-eka Feb 13, 2026
509294b
added theme and scan&share flow in docs (#507)
nishantmourya-eka Feb 23, 2026
9ead48f
hiu enc keyset (#508)
shyamvlmna Feb 23, 2026
7f7a030
update m2 documentation (#509)
shyamvlmna Feb 24, 2026
a05debb
Feature/eng 449 (#510)
shyamvlmna Feb 24, 2026
3ac633b
abdm ecdh apis (#511)
shyamvlmna Feb 27, 2026
801e7f8
refined and updated abha docs (#512)
nishantmourya-eka Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.DS_Store
git .DS_Store
.idea/
.venv
.venv/*
node_modules
369 changes: 369 additions & 0 deletions SDKs/android/ekascribe.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,369 @@
# EkaScribe SDK Documentation

EkaScribe SDK (Voice2Rx) is an Android SDK for voice-based medical transcription and documentation.
It provides real-time voice recording, transcription, and intelligent medical documentation
generation with support for multiple languages and output formats.

**Version:** 3.0.7

**Minimum Android SDK:** 23 (Android 6.0)

---

## 1. Installation

### Add Maven Repository

Add the JitPack repository to your project's `settings.gradle.kts` (or `build.gradle`):

```kotlin
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Add below line to fetch SDK from Jitpack
maven { url = uri("<https://jitpack.io>") }
}
}

```

### Add Dependencies

Add the EkaScribe SDK and required networking dependency to your app's `build.gradle.kts`:

```kotlin
dependencies {
implementation("com.github.eka-care:Eka-Scribe-Android:${LATEST_VERSION}")
}

```

### Required Permissions

Add the following permissions to your `AndroidManifest.xml`:

```xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

**Note:** You must request `RECORD_AUDIO` permission at runtime for Android 6.0 and above.

---

## 2. Initialization

Initialize the SDK in your `Application` class or main `Activity`.

### Step 1: Implement Lifecycle Callbacks

Create a class that implements `Voice2RxLifecycleCallbacks` to handle session events.

```kotlin
import com.eka.voice2rx_sdk.sdkinit.Voice2RxLifecycleCallbacks
import com.eka.voice2rx_sdk.common.models.EkaScribeError

class MyVoice2RxCallbacks : Voice2RxLifecycleCallbacks {
override fun onStartSession(sessionId: String) {
// Recording started
}

override fun onStopSession(sessionId: String, recordedFiles: Int) {
// Get result when ready after stopping the session
CoroutineScope(Dispatchers.IO).launch {
Voice2Rx.pollEkaScribeResult(sessionId = sessionId).onSuccess {
Log.d(TAG, it.templates.toString())
}.onFailure {
Log.d(TAG, "error : ${it.message.toString()}")
}
}
}

override fun onPauseSession(sessionId: String) {
// Recording paused
}

override fun onResumeSession(sessionId: String) {
// Recording resumed
}

override fun onError(error: EkaScribeError) {
// Handle error
}
}

```

### Step 2: Implement TokenStorage

The networking module requires a `TokenStorage` implementation to handle authentication tokens.

```kotlin
import com.eka.networking.token.TokenStorage

class MyTokenStorage : TokenStorage {
override fun getAccessToken(): String {
return "access_token"
}

override fun getRefreshToken(): String {
return "refresh_token"
}

override fun saveTokens(accessToken: String, refreshToken: String) {
// save tokens
}

override fun onSessionExpired() {
// SessionExpired refresh token expired
}
}
```

### Step 3: Configure and Initialize

Initialize `Voice2Rx` with `Voice2RxInitConfig` and `NetworkConfig`.

```kotlin
import com.eka.voice2rx_sdk.sdkinit.Voice2Rx
import com.eka.voice2rx_sdk.sdkinit.Voice2RxInitConfig
import com.eka.networking.client.NetworkConfig
import com.eka.networking.client.AuthConfig

// 1. Configure Network
val networkConfig = NetworkConfig(
appId = "your-app-id",
baseUrl = "<https://api.eka.care/>",
appVersionName = BuildConfig.VERSION_NAME,
appVersionCode = BuildConfig.VERSION_CODE,
isDebugApp = false // false in production environment,
apiCallTimeOutInSec = 30L,
headers = mapOf(), // Optional headers
tokenStorage = MyTokenStorage()
)

// 2. Configure SDK
val config = Voice2RxInitConfig(
voice2RxLifecycle = MyVoice2RxCallbacks(),
networkConfig = networkConfig,
)

// 3. Initialize
Voice2Rx.init(config, context)

```

---

## 3. Core API Reference

All main functions are available via the `Voice2Rx` singleton object.

### Recording Control

### `startVoice2Rx`

Starts a new voice recording session.

```kotlin
fun startVoice2Rx(
mode: String = Voice2RxType.CONSULTATION.value, // "consultation" or "dictation"
patientDetails: PatientDetails? = null,
outputFormats: List<Template>, // Max 2 formats
languages: List<String>, // Max 2 languages
modelType: String, // e.g., "pro"
onError: (EkaScribeError) -> Unit,
onStart: (String) -> Unit
)

```

**Example:**

```kotlin
// Define output templates using Template(templateId, templateName)
val outputFormats = listOf(
Template(templateId = "19288d2f-81a9-46a6-b804-9651242a9b3e", templateName = "SOAP Note")
)

val languages = listOf("en-IN")

Voice2Rx.startVoice2Rx(
mode = Voice2RxType.DICTATION.value,
outputFormats = outputFormats,
languages = languages,
modelType = "pro" // or lite for faster results,
onError = { error -> Log.e("SDK", "Error: ${error.errorDetails.message}") },
onStart = { sessionId -> Log.d("SDK", "Started: $sessionId") }
)

```

### `pauseVoice2Rx`

Pauses the current recording.

```kotlin
Voice2Rx.pauseVoice2Rx()

```

### `resumeVoice2Rx`

Resumes a paused recording.

```kotlin
Voice2Rx.resumeVoice2Rx()

```

### `stopVoice2Rx`

Stops the recording and triggers processing.

```kotlin
Voice2Rx.stopVoice2Rx()

```

### `isCurrentlyRecording`

Checks if a recording is in progress.

```kotlin
val isRecording = Voice2Rx.isCurrentlyRecording()

```

### Data & Results

### `getSessionOutput`

Retrieves the transcription/generated output for a session.

```kotlin
suspend fun getSessionOutput(sessionId: String): Result<SessionResult>

```

### `pollEkaScribeResult`

Polls for results, useful for waiting until processing completes.

```kotlin
suspend fun pollEkaScribeResult(sessionId: String): Result<SessionResult>

```

### `getHistoryVoice2Rx`

Fetches session history.

```kotlin
suspend fun getHistoryVoice2Rx(count: Int? = null): Voice2RxHistoryResponse?

```

### `getFullRecordingFile`

Gets the audio file for a session.

```kotlin
fun getFullRecordingFile(sessionId: String): Result<File>

```

### Session Info & Monitoring

### `getSessionUploadInfoAsFlow`

Observe the upload stage of a session (Uploading, Processing, Completed).

```kotlin
suspend fun getSessionUploadInfoAsFlow(sessionId: String): Flow<VoiceTransactionStage>?

```

### `getVoiceActivityFlow`

Flow for real-time voice activity (speech detection, amplitude).

```kotlin
fun getVoiceActivityFlow(): Flow<VoiceActivityData>?

```

### `getAudioQualityFlow`

Flow for real-time audio quality metrics (STOI, PESQ, SI-SDR).

```kotlin
fun getAudioQualityFlow(): Flow<AudioQualityMetrics?>?

```

### Configuration & Templates

### `getTemplates`

Get available output templates.

```kotlin
suspend fun getTemplates(): Result<List<TemplateItem>>?

```

### `getUserConfigs`

Get user configuration including supported languages and modes.

```kotlin
suspend fun getUserConfigs(): Result<UserConfigs>

```

### `updateUserConfigs`

Update user preferences (selected language, mode, etc.).

```kotlin
suspend fun updateUserConfigs(selectedUserPreferences: SelectedUserPreferences): Result<Boolean>

```

---

## 4. Error Handling

Errors are returned via `EkaScribeError`.

**Common Error Codes:**

- `SUPPORTED_OUTPUT_FORMATS_COUNT_EXCEEDED`: Max 2 output formats allowed.
- `SUPPORTED_LANGUAGES_COUNT_EXCEEDED`: Max 2 languages allowed.
- `LANGUAGE_LIST_CAN_NOT_BE_EMPTY`
- `OUTPUT_FORMAT_LIST_CAN_NOT_BE_EMPTY`

**Data Class:**

```kotlin
data class EkaScribeError(
val sessionId: String,
val errorDetails: EkaScribeErrorDetails, // Contains 'message', 'displayMessage', 'code'
val voiceError: VoiceError
)

```

## 5. Cleanup

Call `releaseResources()` when the SDK is no longer needed (e.g., in `onDestroy` of your host
Activity/Application).

```kotlin
Voice2Rx.releaseResources()

```
Loading