@eka-care/ekascribe-ts-sdk 1.4.39 → 1.4.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/config/get-voice-api-v2-config.d.ts +2 -0
- package/dist/api/config/get-voice-api-v2-config.js +26 -0
- package/dist/api/config/patch-voice-api-v2-config.d.ts +3 -0
- package/dist/api/config/patch-voice-api-v2-config.js +28 -0
- package/dist/api/post-cog-init.js +2 -1
- package/dist/api/post-transaction-init.d.ts +1 -1
- package/dist/api/post-transaction-init.js +2 -2
- package/dist/api/template-sections/delete-v1-template-section.d.ts +3 -0
- package/dist/api/template-sections/delete-v1-template-section.js +28 -0
- package/dist/api/template-sections/get-v1-template-sections.d.ts +3 -0
- package/dist/api/template-sections/get-v1-template-sections.js +28 -0
- package/dist/api/template-sections/patch-v1-template-section.d.ts +3 -0
- package/dist/api/template-sections/patch-v1-template-section.js +37 -0
- package/dist/api/template-sections/post-v1-template-section.d.ts +3 -0
- package/dist/api/template-sections/post-v1-template-section.js +36 -0
- package/dist/api/templates/cook-v1-medai-ai-create-template.d.ts +3 -0
- package/dist/api/templates/cook-v1-medai-ai-create-template.js +26 -0
- package/dist/api/templates/delete-v1-template.d.ts +3 -0
- package/dist/api/templates/delete-v1-template.js +28 -0
- package/dist/api/templates/get-v1-templates.d.ts +3 -0
- package/dist/api/templates/get-v1-templates.js +28 -0
- package/dist/api/templates/patch-v1-template.d.ts +3 -0
- package/dist/api/templates/patch-v1-template.js +34 -0
- package/dist/api/templates/post-transaction-convert-to-template.d.ts +3 -0
- package/dist/api/templates/post-transaction-convert-to-template.js +29 -0
- package/dist/api/templates/post-v1-template.d.ts +3 -0
- package/dist/api/templates/post-v1-template.js +34 -0
- package/dist/api/transaction/get-transaction-history.d.ts +5 -0
- package/dist/api/transaction/get-transaction-history.js +28 -0
- package/dist/api/transaction/get-voice-api-v2-config.d.ts +2 -0
- package/dist/api/transaction/get-voice-api-v2-config.js +26 -0
- package/dist/api/transaction/get-voice-api-v3-status.d.ts +54 -0
- package/dist/api/transaction/get-voice-api-v3-status.js +26 -0
- package/dist/api/transaction/patch-transaction-status.d.ts +4 -0
- package/dist/api/transaction/patch-transaction-status.js +43 -0
- package/dist/api/transaction/post-transaction-commit.d.ts +3 -0
- package/dist/api/transaction/post-transaction-commit.js +32 -0
- package/dist/api/transaction/post-transaction-init.d.ts +3 -0
- package/dist/api/transaction/post-transaction-init.js +40 -0
- package/dist/api/transaction/post-transaction-stop.d.ts +3 -0
- package/dist/api/transaction/post-transaction-stop.js +32 -0
- package/dist/audio-chunker/vad-web.js +0 -3
- package/dist/constants/types.d.ts +117 -2
- package/dist/fetch-client/helper.d.ts +6 -4
- package/dist/fetch-client/helper.js +18 -10
- package/dist/fetch-client/index.js +7 -2
- package/dist/index.d.ts +15 -2
- package/dist/index.js +73 -12
- package/dist/main/end-recording.js +2 -2
- package/dist/main/init-transaction.js +1 -1
- package/dist/main/pause-recording.js +1 -0
- package/dist/main/resume-recording.js +1 -0
- package/dist/main/retry-upload-recording.js +1 -1
- package/dist/main/start-recording.js +4 -1
- package/dist/utils/search-sessions-by-patient-name.d.ts +7 -0
- package/dist/utils/search-sessions-by-patient-name.js +27 -0
- package/package.json +1 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SDK_STATUS_CODE } from '../../constants/constant';
|
|
2
|
+
import fetchWrapper from '../../fetch-client';
|
|
3
|
+
import { GET_EKA_VOICE_HOST_V2 } from '../../fetch-client/helper';
|
|
4
|
+
export const processingError = {
|
|
5
|
+
error: {
|
|
6
|
+
type: '',
|
|
7
|
+
code: 'cancelled_by_user',
|
|
8
|
+
msg: 'Cancelled_by_user',
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
const patchTransactionStatus = async ({ sessionId, processing_status, processing_error, }) => {
|
|
12
|
+
try {
|
|
13
|
+
const headers = new Headers();
|
|
14
|
+
headers.append('Content-Type', 'application/json');
|
|
15
|
+
const raw = {
|
|
16
|
+
processing_status,
|
|
17
|
+
processing_error,
|
|
18
|
+
};
|
|
19
|
+
const options = {
|
|
20
|
+
method: 'PATCH',
|
|
21
|
+
headers,
|
|
22
|
+
body: JSON.stringify(raw),
|
|
23
|
+
};
|
|
24
|
+
const response = await fetchWrapper(`${GET_EKA_VOICE_HOST_V2()}/transaction/${sessionId}`, options);
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`Error: ${response.statusText}`);
|
|
27
|
+
}
|
|
28
|
+
let res = await response.json();
|
|
29
|
+
res = {
|
|
30
|
+
...res,
|
|
31
|
+
code: response.status,
|
|
32
|
+
};
|
|
33
|
+
return res;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error('Patch transaction status api failed', error);
|
|
37
|
+
return {
|
|
38
|
+
code: SDK_STATUS_CODE.INTERNAL_SERVER_ERROR,
|
|
39
|
+
message: `Something went wrong! ${error}`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export default patchTransactionStatus;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SDK_STATUS_CODE } from '../../constants/constant';
|
|
2
|
+
import fetchWrapper from '../../fetch-client';
|
|
3
|
+
import { GET_EKA_VOICE_HOST_V2 } from '../../fetch-client/helper';
|
|
4
|
+
async function postTransactionCommit({ audioFiles, txnId, }) {
|
|
5
|
+
try {
|
|
6
|
+
const headers = new Headers();
|
|
7
|
+
headers.append('Content-Type', 'application/json');
|
|
8
|
+
const raw = {
|
|
9
|
+
audio_files: audioFiles,
|
|
10
|
+
};
|
|
11
|
+
const options = {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers,
|
|
14
|
+
body: JSON.stringify(raw),
|
|
15
|
+
};
|
|
16
|
+
const response = await fetchWrapper(`${GET_EKA_VOICE_HOST_V2()}/transaction/commit/${txnId}`, options);
|
|
17
|
+
let res = await response.json();
|
|
18
|
+
res = {
|
|
19
|
+
...res,
|
|
20
|
+
code: response.status,
|
|
21
|
+
};
|
|
22
|
+
return res;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.log('%c Line:52 🥖 postTransactionInit -> error', 'color:#f5ce50', error);
|
|
26
|
+
return {
|
|
27
|
+
code: SDK_STATUS_CODE.INTERNAL_SERVER_ERROR,
|
|
28
|
+
message: `Something went wrong! ${error}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export default postTransactionCommit;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { TPostTransactionInitRequest, TPostTransactionResponse } from '../../constants/types';
|
|
2
|
+
declare function postTransactionInit({ mode, txnId, s3Url, input_language, output_format_template, model_training_consent, auto_download, transfer, system_info, patient_details, }: TPostTransactionInitRequest): Promise<TPostTransactionResponse>;
|
|
3
|
+
export default postTransactionInit;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SDK_STATUS_CODE } from '../../constants/constant';
|
|
2
|
+
import fetchWrapper from '../../fetch-client';
|
|
3
|
+
import { GET_EKA_VOICE_HOST_V2 } from '../../fetch-client/helper';
|
|
4
|
+
async function postTransactionInit({ mode, txnId, s3Url, input_language, output_format_template, model_training_consent, auto_download, transfer, system_info, patient_details, }) {
|
|
5
|
+
try {
|
|
6
|
+
const headers = new Headers();
|
|
7
|
+
headers.append('Content-Type', 'application/json');
|
|
8
|
+
const raw = {
|
|
9
|
+
mode,
|
|
10
|
+
s3_url: s3Url,
|
|
11
|
+
input_language,
|
|
12
|
+
output_format_template,
|
|
13
|
+
model_training_consent,
|
|
14
|
+
auto_download,
|
|
15
|
+
transfer,
|
|
16
|
+
system_info,
|
|
17
|
+
patient_details,
|
|
18
|
+
};
|
|
19
|
+
const options = {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
headers,
|
|
22
|
+
body: JSON.stringify(raw),
|
|
23
|
+
};
|
|
24
|
+
const response = await fetchWrapper(`${GET_EKA_VOICE_HOST_V2()}/transaction/init/${txnId}`, options);
|
|
25
|
+
let res = await response.json();
|
|
26
|
+
res = {
|
|
27
|
+
...res,
|
|
28
|
+
code: response.status,
|
|
29
|
+
};
|
|
30
|
+
return res;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.log('%c Line:52 🥖 postTransactionInit -> error', 'color:#f5ce50', error);
|
|
34
|
+
return {
|
|
35
|
+
code: SDK_STATUS_CODE.INTERNAL_SERVER_ERROR,
|
|
36
|
+
message: `Something went wrong! ${error}`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export default postTransactionInit;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SDK_STATUS_CODE } from '../../constants/constant';
|
|
2
|
+
import fetchWrapper from '../../fetch-client';
|
|
3
|
+
import { GET_EKA_VOICE_HOST_V2 } from '../../fetch-client/helper';
|
|
4
|
+
async function postTransactionStop({ txnId, audioFiles, }) {
|
|
5
|
+
try {
|
|
6
|
+
const headers = new Headers();
|
|
7
|
+
headers.append('Content-Type', 'application/json');
|
|
8
|
+
const raw = {
|
|
9
|
+
audio_files: audioFiles,
|
|
10
|
+
};
|
|
11
|
+
const options = {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers,
|
|
14
|
+
body: JSON.stringify(raw),
|
|
15
|
+
};
|
|
16
|
+
const response = await fetchWrapper(`${GET_EKA_VOICE_HOST_V2()}/transaction/stop/${txnId}`, options);
|
|
17
|
+
let res = await response.json();
|
|
18
|
+
res = {
|
|
19
|
+
...res,
|
|
20
|
+
code: response.status,
|
|
21
|
+
};
|
|
22
|
+
return res;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.log('%c Line:52 🥖 postTransactionInit -> error', 'color:#f5ce50', error);
|
|
26
|
+
return {
|
|
27
|
+
code: SDK_STATUS_CODE.INTERNAL_SERVER_ERROR,
|
|
28
|
+
message: `Something went wrong! ${error}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export default postTransactionStop;
|
|
@@ -125,9 +125,6 @@ class VadWebClient {
|
|
|
125
125
|
this.frame_size = FRAME_SIZE;
|
|
126
126
|
this.speech_pad_frames = PRE_SPEECH_PAD_FRAMES;
|
|
127
127
|
this.micVad = {};
|
|
128
|
-
// instantiate MicVad
|
|
129
|
-
// TODO: initialise this in start recording
|
|
130
|
-
// this.initVad();
|
|
131
128
|
}
|
|
132
129
|
/**
|
|
133
130
|
* Check for continuous silence and trigger periodic warnings
|
|
@@ -12,6 +12,16 @@ export type TGetConfigV2Response = {
|
|
|
12
12
|
selected_preferences?: TSelectedPreferences;
|
|
13
13
|
settings?: TConfigSettings;
|
|
14
14
|
model?: string;
|
|
15
|
+
my_templates?: string[];
|
|
16
|
+
user_details: {
|
|
17
|
+
fn: string;
|
|
18
|
+
mn: string;
|
|
19
|
+
ln: string;
|
|
20
|
+
dob: string;
|
|
21
|
+
gen: 'F' | 'M' | 'O';
|
|
22
|
+
s: string;
|
|
23
|
+
};
|
|
24
|
+
wid: string;
|
|
15
25
|
};
|
|
16
26
|
message?: string;
|
|
17
27
|
code?: number;
|
|
@@ -45,7 +55,7 @@ export type TStartRecordingRequest = {
|
|
|
45
55
|
model_training_consent: boolean;
|
|
46
56
|
transfer: string;
|
|
47
57
|
system_info: TSystemInfo;
|
|
48
|
-
patient_details
|
|
58
|
+
patient_details?: TPatientDetails;
|
|
49
59
|
};
|
|
50
60
|
export type TPatientDetails = {
|
|
51
61
|
username: string;
|
|
@@ -103,7 +113,7 @@ export type TPostTransactionInitRequest = {
|
|
|
103
113
|
auto_download: boolean;
|
|
104
114
|
model_training_consent: boolean;
|
|
105
115
|
system_info: TSystemInfo;
|
|
106
|
-
patient_details
|
|
116
|
+
patient_details?: TPatientDetails;
|
|
107
117
|
};
|
|
108
118
|
export type TPostTransactionCommitRequest = {
|
|
109
119
|
audioFiles: string[];
|
|
@@ -171,6 +181,7 @@ export type TSessionHistoryData = {
|
|
|
171
181
|
mode: string;
|
|
172
182
|
uuid: string;
|
|
173
183
|
oid: string;
|
|
184
|
+
patient_details?: TPatientDetails;
|
|
174
185
|
};
|
|
175
186
|
export type TAudioChunksInfo = {
|
|
176
187
|
fileName: string;
|
|
@@ -222,3 +233,107 @@ export type TFileUploadProgressCallback = (args: {
|
|
|
222
233
|
msg: string;
|
|
223
234
|
};
|
|
224
235
|
}) => void;
|
|
236
|
+
export interface TPostV1TemplateRequest {
|
|
237
|
+
title: string;
|
|
238
|
+
desc?: string;
|
|
239
|
+
section_ids: string[];
|
|
240
|
+
template_id?: string;
|
|
241
|
+
}
|
|
242
|
+
export interface TPostV1TemplateResponse {
|
|
243
|
+
code: number;
|
|
244
|
+
msg: string;
|
|
245
|
+
template_id?: string;
|
|
246
|
+
message?: string;
|
|
247
|
+
error?: {
|
|
248
|
+
code: string;
|
|
249
|
+
message: string;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
export interface TTemplate {
|
|
253
|
+
id: string;
|
|
254
|
+
title: string;
|
|
255
|
+
desc: string;
|
|
256
|
+
section_ids: string[];
|
|
257
|
+
is_editable: boolean;
|
|
258
|
+
}
|
|
259
|
+
export interface TGetV1TemplatesResponse {
|
|
260
|
+
items: TTemplate[];
|
|
261
|
+
code: number;
|
|
262
|
+
error?: {
|
|
263
|
+
code: string;
|
|
264
|
+
message: string;
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export type TPostCookV1MediaAiCreateTemplateResponse = {
|
|
268
|
+
title: string;
|
|
269
|
+
desc: string;
|
|
270
|
+
sections: TSection[];
|
|
271
|
+
code: number;
|
|
272
|
+
message: string;
|
|
273
|
+
};
|
|
274
|
+
export interface TPostV1TemplateSectionRequest {
|
|
275
|
+
title: string;
|
|
276
|
+
desc?: string;
|
|
277
|
+
format?: 'P' | 'B';
|
|
278
|
+
example?: string;
|
|
279
|
+
section_id?: string;
|
|
280
|
+
}
|
|
281
|
+
export interface TPostV1TemplateSectionResponse {
|
|
282
|
+
msg: string;
|
|
283
|
+
section_id: string;
|
|
284
|
+
code: number;
|
|
285
|
+
action: 'updated' | 'created_custom';
|
|
286
|
+
error?: {
|
|
287
|
+
code: string;
|
|
288
|
+
message: string;
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
export interface TSection {
|
|
292
|
+
id: string;
|
|
293
|
+
title: string;
|
|
294
|
+
desc: string;
|
|
295
|
+
format: 'P' | 'B';
|
|
296
|
+
example: string;
|
|
297
|
+
default?: boolean;
|
|
298
|
+
parent_section_id?: string;
|
|
299
|
+
}
|
|
300
|
+
export interface TGetV1TemplateSectionsResponse {
|
|
301
|
+
items: TSection[];
|
|
302
|
+
code: number;
|
|
303
|
+
error?: {
|
|
304
|
+
code: string;
|
|
305
|
+
message: string;
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
export type TPatchVoiceApiV2ConfigRequest = {
|
|
309
|
+
auto_download?: boolean;
|
|
310
|
+
default_languages?: string[];
|
|
311
|
+
my_templates?: string[];
|
|
312
|
+
scribe_enabled?: boolean;
|
|
313
|
+
};
|
|
314
|
+
export interface TPatchVoiceApiV2ConfigResponse extends TPatchVoiceApiV2ConfigRequest {
|
|
315
|
+
msg: string;
|
|
316
|
+
code: number;
|
|
317
|
+
error?: {
|
|
318
|
+
code: string;
|
|
319
|
+
message: string;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
export type TPostV1ConvertToTemplateRequest = {
|
|
323
|
+
txn_id: string;
|
|
324
|
+
template_id: string;
|
|
325
|
+
};
|
|
326
|
+
export type TPostV1ConvertToTemplateResponse = {
|
|
327
|
+
status: 'success' | 'failed';
|
|
328
|
+
message: string;
|
|
329
|
+
txn_id: string;
|
|
330
|
+
template_id: string;
|
|
331
|
+
b_id: string;
|
|
332
|
+
code: number;
|
|
333
|
+
msg: string;
|
|
334
|
+
error?: {
|
|
335
|
+
code: string;
|
|
336
|
+
message: string;
|
|
337
|
+
display_message: string;
|
|
338
|
+
};
|
|
339
|
+
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
declare const setEnv: ({ env, clientId, auth_token, }: {
|
|
2
2
|
env?: "PROD" | "DEV";
|
|
3
3
|
clientId?: string;
|
|
4
|
-
auth_token
|
|
4
|
+
auth_token?: string;
|
|
5
5
|
}) => void;
|
|
6
|
-
export declare const GET_EKA_HOST: () => string;
|
|
7
6
|
export declare const GET_CLIENT_ID: () => string;
|
|
8
7
|
export declare const GET_AUTH_TOKEN: () => string;
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
8
|
+
export declare const GET_EKA_VOICE_HOST_V1: () => string;
|
|
9
|
+
export declare const GET_EKA_VOICE_HOST_V2: () => string;
|
|
10
|
+
export declare const GET_EKA_VOICE_HOST_V3: () => string;
|
|
11
|
+
export declare const GET_COOK_HOST_V1: () => string;
|
|
12
|
+
export declare const GET_COG_HOST: () => string;
|
|
11
13
|
export default setEnv;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
const DEV = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
COG_HOST: 'https://cog.dev.eka.care',
|
|
3
|
+
EKA_VOICE_HOST_V1: 'https://v2rxbe.dev.eka.care/voice/api/v1',
|
|
4
|
+
EKA_VOICE_HOST_V2: 'https://v2rxbe.dev.eka.care/voice/api/v2',
|
|
5
|
+
EKA_VOICE_HOST_V3: 'https://v2rxbe.dev.eka.care/voice/api/v3',
|
|
6
|
+
COOK_V1: ' https://deepthought-genai.dev.eka.care/api/v1',
|
|
5
7
|
};
|
|
6
8
|
const PROD = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
COG_HOST: 'https://cog.eka.care',
|
|
10
|
+
EKA_VOICE_HOST_V1: 'https://api.eka.care/voice/api/v1',
|
|
11
|
+
EKA_VOICE_HOST_V2: 'https://api.eka.care/voice/api/v2',
|
|
12
|
+
EKA_VOICE_HOST_V3: 'https://api.eka.care/voice/api/v3',
|
|
13
|
+
COOK_V1: ' https://cook.eka.care/api/v1',
|
|
10
14
|
};
|
|
11
15
|
let envVar = PROD;
|
|
12
16
|
let client_id = 'doc-web';
|
|
@@ -18,11 +22,15 @@ const setEnv = ({ env, clientId, auth_token, }) => {
|
|
|
18
22
|
if (clientId) {
|
|
19
23
|
client_id = clientId;
|
|
20
24
|
}
|
|
21
|
-
|
|
25
|
+
if (auth_token) {
|
|
26
|
+
auth = auth_token;
|
|
27
|
+
}
|
|
22
28
|
};
|
|
23
|
-
export const GET_EKA_HOST = () => envVar.EKA_HOST;
|
|
24
29
|
export const GET_CLIENT_ID = () => client_id;
|
|
25
30
|
export const GET_AUTH_TOKEN = () => auth;
|
|
26
|
-
export const
|
|
27
|
-
export const
|
|
31
|
+
export const GET_EKA_VOICE_HOST_V1 = () => envVar.EKA_VOICE_HOST_V1;
|
|
32
|
+
export const GET_EKA_VOICE_HOST_V2 = () => envVar.EKA_VOICE_HOST_V2;
|
|
33
|
+
export const GET_EKA_VOICE_HOST_V3 = () => envVar.EKA_VOICE_HOST_V3;
|
|
34
|
+
export const GET_COOK_HOST_V1 = () => envVar.COOK_V1;
|
|
35
|
+
export const GET_COG_HOST = () => envVar.COG_HOST;
|
|
28
36
|
export default setEnv;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { GET_CLIENT_ID, GET_AUTH_TOKEN } from './helper';
|
|
2
|
-
const API_TIMEOUT_MS =
|
|
2
|
+
const API_TIMEOUT_MS = 10000;
|
|
3
3
|
export default async function fetchWrapper(url, options = {}, timeoutMs = API_TIMEOUT_MS) {
|
|
4
4
|
const controller = new AbortController();
|
|
5
5
|
let timeoutId = null;
|
|
6
6
|
try {
|
|
7
7
|
// Set up timeout
|
|
8
8
|
timeoutId = setTimeout(() => {
|
|
9
|
+
console.log('request aborted due to timeout');
|
|
9
10
|
controller.abort();
|
|
10
11
|
}, timeoutMs);
|
|
11
12
|
const newHeaders = new Headers(options.headers);
|
|
@@ -21,10 +22,14 @@ export default async function fetchWrapper(url, options = {}, timeoutMs = API_TI
|
|
|
21
22
|
signal: controller.signal,
|
|
22
23
|
credentials: 'include',
|
|
23
24
|
});
|
|
25
|
+
console.log(response, response.status, 'response in fetch wrapper - SDK');
|
|
26
|
+
if (response.status === 401 || response.status === 403) {
|
|
27
|
+
console.log('unauthorized - fetch wrapper - SDK', response.status);
|
|
28
|
+
}
|
|
24
29
|
return response;
|
|
25
30
|
}
|
|
26
31
|
catch (error) {
|
|
27
|
-
console.error(error);
|
|
32
|
+
console.error(error, 'error in fetch wrapper - SDK');
|
|
28
33
|
throw error;
|
|
29
34
|
}
|
|
30
35
|
finally {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { TGetStatusResponse } from './api/get-voice-api-v3-status';
|
|
2
|
-
import { TEndRecordingResponse, TErrorCallback, TFileUploadProgressCallback, TGetTransactionHistoryResponse, TPatchTransactionRequest, TPostTransactionResponse, TStartRecordingRequest } from './constants/types';
|
|
1
|
+
import { TGetStatusResponse } from './api/transaction/get-voice-api-v3-status';
|
|
2
|
+
import { TEndRecordingResponse, TErrorCallback, TFileUploadProgressCallback, TGetTransactionHistoryResponse, TPatchTransactionRequest, TPatchVoiceApiV2ConfigRequest, TPostTransactionResponse, TPostV1ConvertToTemplateRequest, TPostV1TemplateRequest, TPostV1TemplateSectionRequest, TStartRecordingRequest } from './constants/types';
|
|
3
|
+
import { TSearchSessionsByPatientRequest } from './utils/search-sessions-by-patient-name';
|
|
3
4
|
declare class EkaScribe {
|
|
4
5
|
private static instance;
|
|
5
6
|
private vadInstance;
|
|
@@ -51,6 +52,18 @@ declare class EkaScribe {
|
|
|
51
52
|
short_thsld: number;
|
|
52
53
|
long_thsld: number;
|
|
53
54
|
}): void;
|
|
55
|
+
getAllTemplates(): Promise<import("./constants/types").TGetV1TemplatesResponse>;
|
|
56
|
+
createTemplate(template: TPostV1TemplateRequest): Promise<import("./constants/types").TPostV1TemplateResponse>;
|
|
57
|
+
updateTemplate(template: TPostV1TemplateRequest): Promise<import("./constants/types").TPostV1TemplateResponse>;
|
|
58
|
+
deleteTemplate(template_id: string): Promise<import("./constants/types").TPostV1TemplateResponse>;
|
|
59
|
+
aiGenerateTemplate(formData: FormData): Promise<import("./constants/types").TPostCookV1MediaAiCreateTemplateResponse>;
|
|
60
|
+
updateConfig(request: TPatchVoiceApiV2ConfigRequest): Promise<any>;
|
|
61
|
+
getAllTemplateSections(): Promise<import("./constants/types").TGetV1TemplateSectionsResponse>;
|
|
62
|
+
createTemplateSection(templateSection: TPostV1TemplateSectionRequest): Promise<import("./constants/types").TPostV1TemplateSectionResponse>;
|
|
63
|
+
updateTemplateSection(templateSection: TPostV1TemplateSectionRequest): Promise<import("./constants/types").TPostV1TemplateSectionResponse>;
|
|
64
|
+
deleteTemplateSection(section_id: string): Promise<import("./constants/types").TPostV1TemplateSectionResponse>;
|
|
65
|
+
postTransactionConvertToTemplate({ txn_id, template_id }: TPostV1ConvertToTemplateRequest): Promise<import("./constants/types").TPostV1ConvertToTemplateResponse>;
|
|
66
|
+
searchSessionsByPatientName(request: TSearchSessionsByPatientRequest): Promise<unknown>;
|
|
54
67
|
}
|
|
55
68
|
export declare const getEkaScribeInstance: ({ access_token, env, clientId, }: {
|
|
56
69
|
access_token?: string;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ekascribe main Class having all the methods - Entry point
|
|
2
|
-
import { getConfigV2 } from './api/get-voice-api-v2-config';
|
|
3
|
-
import { getVoiceApiV3Status } from './api/get-voice-api-v3-status';
|
|
4
|
-
import patchTransactionStatus from './api/patch-transaction-status';
|
|
5
|
-
import postTransactionCommit from './api/post-transaction-commit';
|
|
2
|
+
import { getConfigV2 } from './api/config/get-voice-api-v2-config';
|
|
3
|
+
import { getVoiceApiV3Status } from './api/transaction/get-voice-api-v3-status';
|
|
4
|
+
import patchTransactionStatus from './api/transaction/patch-transaction-status';
|
|
5
|
+
import postTransactionCommit from './api/transaction/post-transaction-commit';
|
|
6
6
|
import AudioBufferManager from './audio-chunker/audio-buffer-manager';
|
|
7
7
|
import AudioFileManager from './audio-chunker/audio-file-manager';
|
|
8
8
|
import VadWebClient from './audio-chunker/vad-web';
|
|
@@ -16,7 +16,19 @@ import retryUploadFailedFiles from './main/retry-upload-recording';
|
|
|
16
16
|
import startVoiceRecording from './main/start-recording';
|
|
17
17
|
import EkaScribeStore from './store/store';
|
|
18
18
|
import initialiseTransaction from './main/init-transaction';
|
|
19
|
-
import getTransactionHistory from './api/get-transaction-history';
|
|
19
|
+
import getTransactionHistory from './api/transaction/get-transaction-history';
|
|
20
|
+
import getV1Templates from './api/templates/get-v1-templates';
|
|
21
|
+
import postV1Template from './api/templates/post-v1-template';
|
|
22
|
+
import patchV1Template from './api/templates/patch-v1-template';
|
|
23
|
+
import deleteV1Template from './api/templates/delete-v1-template';
|
|
24
|
+
import getV1TemplateSections from './api/template-sections/get-v1-template-sections';
|
|
25
|
+
import postV1TemplateSection from './api/template-sections/post-v1-template-section';
|
|
26
|
+
import patchV1TemplateSection from './api/template-sections/patch-v1-template-section';
|
|
27
|
+
import deleteV1TemplateSection from './api/template-sections/delete-v1-template-section';
|
|
28
|
+
import patchVoiceApiV2Config from './api/config/patch-voice-api-v2-config';
|
|
29
|
+
import cookV1MediaAiCreateTemplate from './api/templates/cook-v1-medai-ai-create-template';
|
|
30
|
+
import postV1ConvertToTemplate from './api/templates/post-transaction-convert-to-template';
|
|
31
|
+
import searchSessionsByPatient from './utils/search-sessions-by-patient-name';
|
|
20
32
|
class EkaScribe {
|
|
21
33
|
// Private constructor to prevent direct instantiation
|
|
22
34
|
constructor() {
|
|
@@ -50,16 +62,15 @@ class EkaScribe {
|
|
|
50
62
|
}
|
|
51
63
|
// Static method to get the singleton instance with optional initialization
|
|
52
64
|
static getInstance({ access_token, env, clientId, }) {
|
|
65
|
+
setEnv({
|
|
66
|
+
...(access_token ? { auth_token: access_token } : {}),
|
|
67
|
+
...(env ? { env } : {}),
|
|
68
|
+
...(clientId ? { clientId } : {}),
|
|
69
|
+
});
|
|
53
70
|
if (!EkaScribe.instance) {
|
|
54
71
|
EkaScribe.instance = new EkaScribe();
|
|
72
|
+
console.log('EkaScribe.instance', EkaScribe.instance);
|
|
55
73
|
// Initialize if params are provided
|
|
56
|
-
if (access_token) {
|
|
57
|
-
setEnv({
|
|
58
|
-
auth_token: access_token,
|
|
59
|
-
env,
|
|
60
|
-
clientId,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
74
|
}
|
|
64
75
|
return EkaScribe.instance;
|
|
65
76
|
}
|
|
@@ -256,6 +267,56 @@ class EkaScribe {
|
|
|
256
267
|
long_thsld,
|
|
257
268
|
});
|
|
258
269
|
}
|
|
270
|
+
// Template SDK methods
|
|
271
|
+
async getAllTemplates() {
|
|
272
|
+
const templatesResponse = await getV1Templates();
|
|
273
|
+
return templatesResponse;
|
|
274
|
+
}
|
|
275
|
+
async createTemplate(template) {
|
|
276
|
+
const templatesResponse = await postV1Template(template);
|
|
277
|
+
return templatesResponse;
|
|
278
|
+
}
|
|
279
|
+
async updateTemplate(template) {
|
|
280
|
+
const templatesResponse = await patchV1Template(template);
|
|
281
|
+
return templatesResponse;
|
|
282
|
+
}
|
|
283
|
+
async deleteTemplate(template_id) {
|
|
284
|
+
const templatesResponse = await deleteV1Template(template_id);
|
|
285
|
+
return templatesResponse;
|
|
286
|
+
}
|
|
287
|
+
async aiGenerateTemplate(formData) {
|
|
288
|
+
const templatesResponse = await cookV1MediaAiCreateTemplate(formData);
|
|
289
|
+
return templatesResponse;
|
|
290
|
+
}
|
|
291
|
+
async updateConfig(request) {
|
|
292
|
+
const configResponse = await patchVoiceApiV2Config(request);
|
|
293
|
+
return configResponse;
|
|
294
|
+
}
|
|
295
|
+
// Template Section SDK methods
|
|
296
|
+
async getAllTemplateSections() {
|
|
297
|
+
const templateSectionsResponse = await getV1TemplateSections();
|
|
298
|
+
return templateSectionsResponse;
|
|
299
|
+
}
|
|
300
|
+
async createTemplateSection(templateSection) {
|
|
301
|
+
const templateSectionsResponse = await postV1TemplateSection(templateSection);
|
|
302
|
+
return templateSectionsResponse;
|
|
303
|
+
}
|
|
304
|
+
async updateTemplateSection(templateSection) {
|
|
305
|
+
const templateSectionsResponse = await patchV1TemplateSection(templateSection);
|
|
306
|
+
return templateSectionsResponse;
|
|
307
|
+
}
|
|
308
|
+
async deleteTemplateSection(section_id) {
|
|
309
|
+
const templateSectionsResponse = await deleteV1TemplateSection(section_id);
|
|
310
|
+
return templateSectionsResponse;
|
|
311
|
+
}
|
|
312
|
+
async postTransactionConvertToTemplate({ txn_id, template_id }) {
|
|
313
|
+
const convertToTemplateResponse = await postV1ConvertToTemplate({ txn_id, template_id });
|
|
314
|
+
return convertToTemplateResponse;
|
|
315
|
+
}
|
|
316
|
+
async searchSessionsByPatientName(request) {
|
|
317
|
+
const searchSessionsByPatientNameResponse = await searchSessionsByPatient(request);
|
|
318
|
+
return searchSessionsByPatientNameResponse;
|
|
319
|
+
}
|
|
259
320
|
}
|
|
260
321
|
Object.defineProperty(EkaScribe, "instance", {
|
|
261
322
|
enumerable: true,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import postTransactionCommit from '../api/post-transaction-commit';
|
|
2
|
-
import postTransactionStop from '../api/post-transaction-stop';
|
|
1
|
+
import postTransactionCommit from '../api/transaction/post-transaction-commit';
|
|
2
|
+
import postTransactionStop from '../api/transaction/post-transaction-stop';
|
|
3
3
|
import { OUTPUT_FORMAT, SDK_STATUS_CODE } from '../constants/constant';
|
|
4
4
|
import { ERROR_CODE } from '../constants/enums';
|
|
5
5
|
import EkaScribeStore from '../store/store';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import postTransactionInit from '../api/post-transaction-init';
|
|
1
|
+
import postTransactionInit from '../api/transaction/post-transaction-init';
|
|
2
2
|
import { S3_BUCKET_NAME, SDK_STATUS_CODE } from '../constants/constant';
|
|
3
3
|
import { ERROR_CODE } from '../constants/enums';
|
|
4
4
|
import EkaScribeStore from '../store/store';
|
|
@@ -9,6 +9,7 @@ const pauseVoiceRecording = () => {
|
|
|
9
9
|
if (!fileManagerInstance || !audioBufferInstance || !vadInstance) {
|
|
10
10
|
throw new Error('Class instances are not initialized');
|
|
11
11
|
}
|
|
12
|
+
console.log(vadInstance, 'vad in pause recording');
|
|
12
13
|
vadInstance.pauseVad();
|
|
13
14
|
const txn_id = EkaScribeStore.txnID;
|
|
14
15
|
EkaScribeStore.sessionStatus[txn_id] = {
|
|
@@ -7,6 +7,7 @@ const resumeVoiceRecording = () => {
|
|
|
7
7
|
if (!vadInstance) {
|
|
8
8
|
throw new Error('VAD instance is not initialized');
|
|
9
9
|
}
|
|
10
|
+
console.log(vadInstance, 'vad in resume recording');
|
|
10
11
|
vadInstance.startVad();
|
|
11
12
|
const txn_id = EkaScribeStore.txnID;
|
|
12
13
|
EkaScribeStore.sessionStatus[txn_id] = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import postTransactionCommit from '../api/post-transaction-commit';
|
|
1
|
+
import postTransactionCommit from '../api/transaction/post-transaction-commit';
|
|
2
2
|
import { SDK_STATUS_CODE } from '../constants/constant';
|
|
3
3
|
import { ERROR_CODE } from '../constants/enums';
|
|
4
4
|
import EkaScribeStore from '../store/store';
|
|
@@ -14,9 +14,12 @@ const startVoiceRecording = async () => {
|
|
|
14
14
|
message: 'Microphone access is required to start recording. Please recheck access.',
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
await vadInstance?.initVad();
|
|
18
|
+
console.log(vadInstance, 'vad in start recording');
|
|
18
19
|
const micVad = vadInstance?.getMicVad();
|
|
20
|
+
console.log(micVad, 'mic vad in start recording');
|
|
19
21
|
const isVadLoading = vadInstance?.isVadLoading();
|
|
22
|
+
console.log(isVadLoading, 'is vad loading in start recording');
|
|
20
23
|
if (isVadLoading || !micVad || Object.keys(micVad).length === 0) {
|
|
21
24
|
// retry initiating vad once and if still is in loading return error
|
|
22
25
|
const reinitializeVadResponse = await vadInstance?.reinitializeVad();
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TSessionHistoryData } from '../constants/types';
|
|
2
|
+
export type TSearchSessionsByPatientRequest = {
|
|
3
|
+
sessions: TSessionHistoryData[];
|
|
4
|
+
patientName: string;
|
|
5
|
+
};
|
|
6
|
+
declare const searchSessionsByPatient: ({ sessions, patientName, }: TSearchSessionsByPatientRequest) => Promise<unknown>;
|
|
7
|
+
export default searchSessionsByPatient;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function debounce(func, delay) {
|
|
2
|
+
let timeoutId;
|
|
3
|
+
return (...args) => {
|
|
4
|
+
return new Promise((resolve) => {
|
|
5
|
+
clearTimeout(timeoutId);
|
|
6
|
+
timeoutId = setTimeout(() => {
|
|
7
|
+
resolve(func(...args));
|
|
8
|
+
}, delay);
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const searchByName = (sessions, patientName) => {
|
|
13
|
+
if (!patientName.trim()) {
|
|
14
|
+
return sessions;
|
|
15
|
+
}
|
|
16
|
+
const searchTerm = patientName.toLowerCase().trim();
|
|
17
|
+
return sessions.filter((session) => {
|
|
18
|
+
if (!session.patient_details?.username)
|
|
19
|
+
return false;
|
|
20
|
+
return session.patient_details?.username.toLowerCase().includes(searchTerm);
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const debouncedSearch = debounce(searchByName, 300);
|
|
24
|
+
const searchSessionsByPatient = async ({ sessions, patientName, }) => {
|
|
25
|
+
return debouncedSearch(sessions, patientName);
|
|
26
|
+
};
|
|
27
|
+
export default searchSessionsByPatient;
|