@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.
Files changed (57) hide show
  1. package/dist/api/config/get-voice-api-v2-config.d.ts +2 -0
  2. package/dist/api/config/get-voice-api-v2-config.js +26 -0
  3. package/dist/api/config/patch-voice-api-v2-config.d.ts +3 -0
  4. package/dist/api/config/patch-voice-api-v2-config.js +28 -0
  5. package/dist/api/post-cog-init.js +2 -1
  6. package/dist/api/post-transaction-init.d.ts +1 -1
  7. package/dist/api/post-transaction-init.js +2 -2
  8. package/dist/api/template-sections/delete-v1-template-section.d.ts +3 -0
  9. package/dist/api/template-sections/delete-v1-template-section.js +28 -0
  10. package/dist/api/template-sections/get-v1-template-sections.d.ts +3 -0
  11. package/dist/api/template-sections/get-v1-template-sections.js +28 -0
  12. package/dist/api/template-sections/patch-v1-template-section.d.ts +3 -0
  13. package/dist/api/template-sections/patch-v1-template-section.js +37 -0
  14. package/dist/api/template-sections/post-v1-template-section.d.ts +3 -0
  15. package/dist/api/template-sections/post-v1-template-section.js +36 -0
  16. package/dist/api/templates/cook-v1-medai-ai-create-template.d.ts +3 -0
  17. package/dist/api/templates/cook-v1-medai-ai-create-template.js +26 -0
  18. package/dist/api/templates/delete-v1-template.d.ts +3 -0
  19. package/dist/api/templates/delete-v1-template.js +28 -0
  20. package/dist/api/templates/get-v1-templates.d.ts +3 -0
  21. package/dist/api/templates/get-v1-templates.js +28 -0
  22. package/dist/api/templates/patch-v1-template.d.ts +3 -0
  23. package/dist/api/templates/patch-v1-template.js +34 -0
  24. package/dist/api/templates/post-transaction-convert-to-template.d.ts +3 -0
  25. package/dist/api/templates/post-transaction-convert-to-template.js +29 -0
  26. package/dist/api/templates/post-v1-template.d.ts +3 -0
  27. package/dist/api/templates/post-v1-template.js +34 -0
  28. package/dist/api/transaction/get-transaction-history.d.ts +5 -0
  29. package/dist/api/transaction/get-transaction-history.js +28 -0
  30. package/dist/api/transaction/get-voice-api-v2-config.d.ts +2 -0
  31. package/dist/api/transaction/get-voice-api-v2-config.js +26 -0
  32. package/dist/api/transaction/get-voice-api-v3-status.d.ts +54 -0
  33. package/dist/api/transaction/get-voice-api-v3-status.js +26 -0
  34. package/dist/api/transaction/patch-transaction-status.d.ts +4 -0
  35. package/dist/api/transaction/patch-transaction-status.js +43 -0
  36. package/dist/api/transaction/post-transaction-commit.d.ts +3 -0
  37. package/dist/api/transaction/post-transaction-commit.js +32 -0
  38. package/dist/api/transaction/post-transaction-init.d.ts +3 -0
  39. package/dist/api/transaction/post-transaction-init.js +40 -0
  40. package/dist/api/transaction/post-transaction-stop.d.ts +3 -0
  41. package/dist/api/transaction/post-transaction-stop.js +32 -0
  42. package/dist/audio-chunker/vad-web.js +0 -3
  43. package/dist/constants/types.d.ts +117 -2
  44. package/dist/fetch-client/helper.d.ts +6 -4
  45. package/dist/fetch-client/helper.js +18 -10
  46. package/dist/fetch-client/index.js +7 -2
  47. package/dist/index.d.ts +15 -2
  48. package/dist/index.js +73 -12
  49. package/dist/main/end-recording.js +2 -2
  50. package/dist/main/init-transaction.js +1 -1
  51. package/dist/main/pause-recording.js +1 -0
  52. package/dist/main/resume-recording.js +1 -0
  53. package/dist/main/retry-upload-recording.js +1 -1
  54. package/dist/main/start-recording.js +4 -1
  55. package/dist/utils/search-sessions-by-patient-name.d.ts +7 -0
  56. package/dist/utils/search-sessions-by-patient-name.js +27 -0
  57. 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,3 @@
1
+ import { TPostTransactionCommitRequest, TPostTransactionResponse } from '../../constants/types';
2
+ declare function postTransactionCommit({ audioFiles, txnId, }: TPostTransactionCommitRequest): Promise<TPostTransactionResponse>;
3
+ export default postTransactionCommit;
@@ -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,3 @@
1
+ import { TPostTransactionCommitRequest, TPostTransactionResponse } from '../../constants/types';
2
+ declare function postTransactionStop({ txnId, audioFiles, }: TPostTransactionCommitRequest): Promise<TPostTransactionResponse>;
3
+ export default postTransactionStop;
@@ -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: TPatientDetails;
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: TPatientDetails;
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: string;
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 GET_EKA_V2RX_HOST_V2: () => string;
10
- export declare const GET_EKA_V2RX_HOST_V3: () => string;
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
- EKA_HOST: 'https://api.dev.eka.care',
3
- EKA_V2RX_HOST_V2: 'https://v2rxbe.dev.eka.care/voice/api/v2',
4
- EKA_V2RX_HOST_V3: 'https://v2rxbe.dev.eka.care/voice/api/v3',
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
- EKA_HOST: 'https://api.eka.care',
8
- EKA_V2RX_HOST_V2: 'https://api.eka.care/voice/api/v2',
9
- EKA_V2RX_HOST_V3: 'https://api.eka.care/voice/api/v3',
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
- auth = auth_token;
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 GET_EKA_V2RX_HOST_V2 = () => envVar.EKA_V2RX_HOST_V2;
27
- export const GET_EKA_V2RX_HOST_V3 = () => envVar.EKA_V2RX_HOST_V3;
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 = 5000;
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
- console.log('%c Line:22 🍇 vadInstance', 'color:#fca650', vadInstance);
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eka-care/ekascribe-ts-sdk",
3
- "version": "1.4.39",
3
+ "version": "1.4.41",
4
4
  "main": "dist/index.js",
5
5
  "repository": "git@github.com:eka-care/eka-js-sdk.git",
6
6
  "author": "Sanikagoyal28 <sanikagoyal9@gmail.com>",