@ctchealth/plato-sdk 0.0.19 → 0.0.20
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/README.md +4 -1
- package/package.json +4 -3
- package/src/index.js +18 -0
- package/src/index.js.map +1 -0
- package/src/lib/{constants.ts → constants.d.ts} +3 -3
- package/src/lib/constants.js +20 -0
- package/src/lib/constants.js.map +1 -0
- package/src/lib/plato-intefaces.d.ts +395 -0
- package/src/lib/plato-intefaces.js +175 -0
- package/src/lib/plato-intefaces.js.map +1 -0
- package/src/lib/plato-sdk.d.ts +200 -0
- package/src/lib/plato-sdk.js +653 -0
- package/src/lib/plato-sdk.js.map +1 -0
- package/src/lib/utils.d.ts +24 -0
- package/src/lib/utils.js +70 -0
- package/src/lib/utils.js.map +1 -0
- package/eslint.config.cjs +0 -121
- package/jest.config.ts +0 -10
- package/project.json +0 -24
- package/src/lib/plato-intefaces.ts +0 -433
- package/src/lib/plato-sdk.ts +0 -776
- package/src/lib/utils.ts +0 -72
- package/tsconfig.json +0 -22
- package/tsconfig.lib.json +0 -11
- package/tsconfig.spec.json +0 -10
- /package/src/{index.ts → index.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -165,6 +165,8 @@ Creates a new medical training simulation. It may take a few minutes for the sim
|
|
|
165
165
|
|
|
166
166
|
**Returns:** `Promise<{ simulationId: string, phase: CreationPhase }>`
|
|
167
167
|
|
|
168
|
+
**Learning mode (`isLearning`):** Pass `isLearning: true` and their calls are excluded from `getRecommendations()` and have no post call. Defaults to `false`.
|
|
169
|
+
|
|
168
170
|
##### startCall(simulationId: string)
|
|
169
171
|
|
|
170
172
|
Starts a voice call with the AI persona for the specified simulation.
|
|
@@ -475,7 +477,7 @@ await client.deleteSimulation('507f1f77bcf86cd799439011');
|
|
|
475
477
|
|
|
476
478
|
##### getRecommendations()
|
|
477
479
|
|
|
478
|
-
Retrieves recommendations based on the user's recent call performance. Analyzes the 5 most recent calls using a sliding window of 3 calls to identify patterns and provide actionable insights. Calls shorter than 2 minutes are excluded from analysis. No new recommendations are generated if fewer than 3 eligible calls are available.
|
|
480
|
+
Retrieves recommendations based on the user's recent call performance. Analyzes the 5 most recent calls using a sliding window of 3 calls to identify patterns and provide actionable insights. Calls shorter than 2 minutes are excluded from analysis, as are calls made against learning-mode simulations (`isLearning: true`). No new recommendations are generated if fewer than 3 eligible calls are available.
|
|
479
481
|
|
|
480
482
|
**Returns:** `Promise<RecommendationsResponseDto>` — An object containing:
|
|
481
483
|
|
|
@@ -1167,6 +1169,7 @@ interface CreateSimulationDto {
|
|
|
1167
1169
|
imageId: string;
|
|
1168
1170
|
avatarLanguage: AvatarLanguage;
|
|
1169
1171
|
pdfSlideId?: string;
|
|
1172
|
+
isLearning?: boolean;
|
|
1170
1173
|
}
|
|
1171
1174
|
```
|
|
1172
1175
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ctchealth/plato-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0",
|
|
6
6
|
"@vapi-ai/web": "2.1.8",
|
|
@@ -12,5 +12,6 @@
|
|
|
12
12
|
"typings": "./src/index.d.ts",
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"access": "public"
|
|
15
|
-
}
|
|
16
|
-
|
|
15
|
+
},
|
|
16
|
+
"types": "./src/index.d.ts"
|
|
17
|
+
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
|
|
8
|
+
*
|
|
9
|
+
* This source code and all related materials are confidential and proprietary to ctcHealth.
|
|
10
|
+
* Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
|
|
11
|
+
* and may result in disciplinary action and civil and/or criminal penalties.
|
|
12
|
+
*
|
|
13
|
+
* This software is intended solely for authorized use within ctcHealth and its designated partners.
|
|
14
|
+
*
|
|
15
|
+
* For internal use only.
|
|
16
|
+
*/
|
|
17
|
+
tslib_1.__exportStar(require("./lib/plato-sdk"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/plato-sdk/src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,0DAAgC"}
|
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
*
|
|
12
12
|
* For internal use only.
|
|
13
13
|
*/
|
|
14
|
-
export const MAX_PDF_FILE_SIZE
|
|
15
|
-
export const ALLOWED_PDF_MIME_TYPES
|
|
16
|
-
export const MAX_PDF_PAGES = 100;
|
|
14
|
+
export declare const MAX_PDF_FILE_SIZE: number;
|
|
15
|
+
export declare const ALLOWED_PDF_MIME_TYPES: string[];
|
|
16
|
+
export declare const MAX_PDF_PAGES = 100;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_PDF_PAGES = exports.ALLOWED_PDF_MIME_TYPES = exports.MAX_PDF_FILE_SIZE = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
|
|
8
|
+
*
|
|
9
|
+
* This source code and all related materials are confidential and proprietary to ctcHealth.
|
|
10
|
+
* Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
|
|
11
|
+
* and may result in disciplinary action and civil and/or criminal penalties.
|
|
12
|
+
*
|
|
13
|
+
* This software is intended solely for authorized use within ctcHealth and its designated partners.
|
|
14
|
+
*
|
|
15
|
+
* For internal use only.
|
|
16
|
+
*/
|
|
17
|
+
exports.MAX_PDF_FILE_SIZE = 20 * 1024 * 1024; // 20MB
|
|
18
|
+
exports.ALLOWED_PDF_MIME_TYPES = ['application/pdf'];
|
|
19
|
+
exports.MAX_PDF_PAGES = 100;
|
|
20
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACU,QAAA,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAC7C,QAAA,sBAAsB,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC7C,QAAA,aAAa,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
|
|
5
|
+
*
|
|
6
|
+
* This source code and all related materials are confidential and proprietary to ctcHealth.
|
|
7
|
+
* Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
|
|
8
|
+
* and may result in disciplinary action and civil and/or criminal penalties.
|
|
9
|
+
*
|
|
10
|
+
* This software is intended solely for authorized use within ctcHealth and its designated partners.
|
|
11
|
+
*
|
|
12
|
+
* For internal use only.
|
|
13
|
+
*/
|
|
14
|
+
export declare enum YearOfExperience {
|
|
15
|
+
'1-5' = "1-5 years",
|
|
16
|
+
'6-10' = "6-10 years",
|
|
17
|
+
'11-20' = "16-20 years",
|
|
18
|
+
'20+' = "20+ years"
|
|
19
|
+
}
|
|
20
|
+
export declare enum PracticeType {
|
|
21
|
+
Private = "Private Practice",
|
|
22
|
+
Hospital = "Hospital",
|
|
23
|
+
AcademicMedicalCenter = "Academic Medical Center",
|
|
24
|
+
Clinic = "Clinic"
|
|
25
|
+
}
|
|
26
|
+
export declare enum SegmentType {
|
|
27
|
+
Traditionalist = "The Traditionalist",
|
|
28
|
+
Innovator = "The Innovator",
|
|
29
|
+
PatientOrientedPhysician = "The Patient-Oriented Physician",
|
|
30
|
+
FinanciallyDrivenPrescriber = "The Financially-Driven Prescriber",
|
|
31
|
+
EvidencePurist = "The Evidence-Purist",
|
|
32
|
+
CostConsciousPrescriber = "The Cost-Conscious Prescriber"
|
|
33
|
+
}
|
|
34
|
+
export declare enum AssistantVoiceGender {
|
|
35
|
+
Male = "Male",
|
|
36
|
+
Female = "Female"
|
|
37
|
+
}
|
|
38
|
+
export declare enum AvatarLanguage {
|
|
39
|
+
English = "en",
|
|
40
|
+
German = "de",
|
|
41
|
+
Spanish = "es",
|
|
42
|
+
Italian = "it",
|
|
43
|
+
French = "fr",
|
|
44
|
+
Arabic = "ar",
|
|
45
|
+
Russian = "ru"
|
|
46
|
+
}
|
|
47
|
+
export declare class PersonalityAndBehaviourDto {
|
|
48
|
+
riskTolerance: number;
|
|
49
|
+
researchOrientation: number;
|
|
50
|
+
recognitionNeed: number;
|
|
51
|
+
brandLoyalty: number;
|
|
52
|
+
patientEmpathy: number;
|
|
53
|
+
}
|
|
54
|
+
export declare class ProfessionalProfileDto {
|
|
55
|
+
practiceSettings: string;
|
|
56
|
+
yearOfExperience: number;
|
|
57
|
+
specialityAndDepartment: string;
|
|
58
|
+
location: string;
|
|
59
|
+
}
|
|
60
|
+
export declare class ContextDto {
|
|
61
|
+
subSpecialityOrTherapyFocus: string;
|
|
62
|
+
typicalPatientMix: string;
|
|
63
|
+
keyClinicalDrivers: string;
|
|
64
|
+
}
|
|
65
|
+
export declare class CharacterCreateDto {
|
|
66
|
+
name: string;
|
|
67
|
+
professionalProfile: ProfessionalProfileDto;
|
|
68
|
+
segment: SegmentType;
|
|
69
|
+
personalityAndBehaviour: PersonalityAndBehaviourDto;
|
|
70
|
+
context: ContextDto;
|
|
71
|
+
assistantGender?: AssistantVoiceGender;
|
|
72
|
+
}
|
|
73
|
+
export declare class ProductConfig {
|
|
74
|
+
name: string;
|
|
75
|
+
description: string;
|
|
76
|
+
}
|
|
77
|
+
export declare class CreateSimulationDto {
|
|
78
|
+
persona: CharacterCreateDto;
|
|
79
|
+
product: ProductConfig;
|
|
80
|
+
scenario: string;
|
|
81
|
+
objectives?: string;
|
|
82
|
+
anticipatedObjections?: string;
|
|
83
|
+
imageId: string;
|
|
84
|
+
avatarLanguage: AvatarLanguage;
|
|
85
|
+
pdfSlideId?: string;
|
|
86
|
+
isLearning?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export type RecordingsLimit = 5 | 10 | 25;
|
|
89
|
+
export declare class SimulationRecordingsQueryDto {
|
|
90
|
+
limit?: RecordingsLimit;
|
|
91
|
+
page?: number;
|
|
92
|
+
sort?: SortOrder;
|
|
93
|
+
}
|
|
94
|
+
export declare enum SortOrder {
|
|
95
|
+
ASC = "asc",
|
|
96
|
+
DESC = "desc"
|
|
97
|
+
}
|
|
98
|
+
export declare enum RecordingStatus {
|
|
99
|
+
STARTED = "STARTED",
|
|
100
|
+
PROCESSING = "PROCESSING",
|
|
101
|
+
FINISHED = "FINISHED",
|
|
102
|
+
FAILED = "FAILED"
|
|
103
|
+
}
|
|
104
|
+
export declare class SimulationRecordingsDto {
|
|
105
|
+
_id: string;
|
|
106
|
+
createdAt: Date;
|
|
107
|
+
recordingStatus?: RecordingStatus;
|
|
108
|
+
}
|
|
109
|
+
export interface CallCreateDto {
|
|
110
|
+
/**
|
|
111
|
+
* Call ID obtained
|
|
112
|
+
*/
|
|
113
|
+
callId: string;
|
|
114
|
+
/**
|
|
115
|
+
* Call Assistant ID
|
|
116
|
+
*/
|
|
117
|
+
assistantId: string;
|
|
118
|
+
}
|
|
119
|
+
export interface CallDTO {
|
|
120
|
+
/**
|
|
121
|
+
* call ID
|
|
122
|
+
*/
|
|
123
|
+
_id: string;
|
|
124
|
+
/**
|
|
125
|
+
* call ID obtained
|
|
126
|
+
*/
|
|
127
|
+
callId: string;
|
|
128
|
+
/**
|
|
129
|
+
* call User ID
|
|
130
|
+
*/
|
|
131
|
+
platoUserId: string;
|
|
132
|
+
/**
|
|
133
|
+
* call Assistant ID
|
|
134
|
+
*/
|
|
135
|
+
assistantId: string;
|
|
136
|
+
/**
|
|
137
|
+
* call summary of the conversation
|
|
138
|
+
*/
|
|
139
|
+
summary: string;
|
|
140
|
+
/**
|
|
141
|
+
* call transcript of the conversation
|
|
142
|
+
*/
|
|
143
|
+
transcript: string;
|
|
144
|
+
/**
|
|
145
|
+
* call feedback provided by the user
|
|
146
|
+
*/
|
|
147
|
+
feedback: string;
|
|
148
|
+
/**
|
|
149
|
+
* Success Evaluation returned by model
|
|
150
|
+
*/
|
|
151
|
+
successEvaluation: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* call Recording URL
|
|
154
|
+
*/
|
|
155
|
+
recordingUrl: string;
|
|
156
|
+
/**
|
|
157
|
+
* Status of recording processing (e.g., 'STARTED', 'PROCESSING', 'FINISHED', 'FAILED')
|
|
158
|
+
*/
|
|
159
|
+
recordingStatus?: RecordingStatus;
|
|
160
|
+
/**
|
|
161
|
+
* Date and Time of the creation of the message
|
|
162
|
+
*/
|
|
163
|
+
createdAt: Date;
|
|
164
|
+
/**
|
|
165
|
+
* Date and Time of the creation of the message
|
|
166
|
+
*/
|
|
167
|
+
endedAt: Date;
|
|
168
|
+
/**
|
|
169
|
+
* Rating of the call given by the user
|
|
170
|
+
*/
|
|
171
|
+
rating: number;
|
|
172
|
+
/**
|
|
173
|
+
* Main strenghts of the user conversation based on the analysis of the AI
|
|
174
|
+
*/
|
|
175
|
+
strengths: Array<string>;
|
|
176
|
+
/**
|
|
177
|
+
* Main weak points of the user conversation based on the analysis of the AI
|
|
178
|
+
*/
|
|
179
|
+
weaknesses: Array<string>;
|
|
180
|
+
/**
|
|
181
|
+
* Name of Metric for the AI feedback report
|
|
182
|
+
*/
|
|
183
|
+
metric1: string;
|
|
184
|
+
/**
|
|
185
|
+
* Name of Metric for the AI feedback report
|
|
186
|
+
*/
|
|
187
|
+
metric2: string;
|
|
188
|
+
/**
|
|
189
|
+
* Name of Metric for the AI feedback report
|
|
190
|
+
*/
|
|
191
|
+
metric3: string;
|
|
192
|
+
/**
|
|
193
|
+
* AI feedback value for Metric 1
|
|
194
|
+
*/
|
|
195
|
+
metric1Value: number;
|
|
196
|
+
/**
|
|
197
|
+
* AI feedback value for Metric 2
|
|
198
|
+
*/
|
|
199
|
+
metric2Value: number;
|
|
200
|
+
/**
|
|
201
|
+
* AI feedback value for Metric 3
|
|
202
|
+
*/
|
|
203
|
+
metric3Value: number;
|
|
204
|
+
/**
|
|
205
|
+
* AI feedback value for the call score
|
|
206
|
+
*/
|
|
207
|
+
score?: number;
|
|
208
|
+
/**
|
|
209
|
+
* Defines if the calls will be consider for the memory feature
|
|
210
|
+
*/
|
|
211
|
+
inMemory: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* Duration of the call in milliseconds
|
|
214
|
+
*/
|
|
215
|
+
callDurationMs?: number;
|
|
216
|
+
}
|
|
217
|
+
export declare enum CreationPhase {
|
|
218
|
+
QUEUED = "QUEUED",
|
|
219
|
+
STARTING = "STARTING",
|
|
220
|
+
BUILD_HEADER = "BUILD_HEADER",
|
|
221
|
+
SEGMENT_SELECTED = "SEGMENT_SELECTED",
|
|
222
|
+
BUILD_CONTEXT = "BUILD_CONTEXT",
|
|
223
|
+
BUILD_PSYCHOGRAPHICS = "BUILD_PSYCHOGRAPHICS",
|
|
224
|
+
BUILD_OBJECTIVES = "BUILD_OBJECTIVES",
|
|
225
|
+
PERSONA_ASSEMBLED = "PERSONA_ASSEMBLED",
|
|
226
|
+
CORE = "CORE",
|
|
227
|
+
BOUNDARIES = "BOUNDARIES",
|
|
228
|
+
SPEECH_AND_THOUGHT = "SPEECH_AND_THOUGHT",
|
|
229
|
+
CONVERSATION_EVOLUTION = "CONVERSATION_EVOLUTION",
|
|
230
|
+
MEMORY = "MEMORY",
|
|
231
|
+
OBJECTION_HANDLING = "OBJECTION_HANDLING",
|
|
232
|
+
PERFORMANCE_EVALUATION = "PERFORMANCE_EVALUATION",
|
|
233
|
+
BEHAVIORAL_FRAMEWORKS = "BEHAVIORAL_FRAMEWORKS",
|
|
234
|
+
FINISHED = "FINISHED",
|
|
235
|
+
ERROR = "ERROR"
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Presigned POST data for S3 upload.
|
|
239
|
+
*/
|
|
240
|
+
export interface PresignedPost {
|
|
241
|
+
url: string;
|
|
242
|
+
fields: Record<string, string>;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Response for requesting a PDF upload.
|
|
246
|
+
*/
|
|
247
|
+
export interface RequestPdfUploadResponse {
|
|
248
|
+
presignedPost: PresignedPost;
|
|
249
|
+
objectKey: string;
|
|
250
|
+
pdfId: string;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Persona description within simulation briefing
|
|
254
|
+
*/
|
|
255
|
+
export interface PersonaDescriptionDto {
|
|
256
|
+
summary: string;
|
|
257
|
+
details: string[];
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Scenario context within simulation briefing
|
|
261
|
+
*/
|
|
262
|
+
export interface ScenarioContextDto {
|
|
263
|
+
summary: string;
|
|
264
|
+
steps: string[];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Training objectives within simulation briefing
|
|
268
|
+
*/
|
|
269
|
+
export interface TrainingObjectiveDto {
|
|
270
|
+
summary: string;
|
|
271
|
+
keyObjectives: string[];
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Complete simulation briefing structure generated by multi-agent system
|
|
275
|
+
*/
|
|
276
|
+
export interface SimulationBriefingDto {
|
|
277
|
+
objectiveTag: string;
|
|
278
|
+
personaDescription: PersonaDescriptionDto;
|
|
279
|
+
scenarioContext: ScenarioContextDto;
|
|
280
|
+
trainingObjective: TrainingObjectiveDto;
|
|
281
|
+
}
|
|
282
|
+
export interface SimulationDetailsDto {
|
|
283
|
+
simulationId: string;
|
|
284
|
+
phase: CreationPhase;
|
|
285
|
+
assistantId: string;
|
|
286
|
+
configuration?: CreateSimulationDto;
|
|
287
|
+
simulationBriefing?: SimulationBriefingDto;
|
|
288
|
+
createdAt: Date;
|
|
289
|
+
updatedAt: Date;
|
|
290
|
+
}
|
|
291
|
+
export declare enum RecommendationPriority {
|
|
292
|
+
HIGH = "high",
|
|
293
|
+
MEDIUM = "medium",
|
|
294
|
+
LOW = "low"
|
|
295
|
+
}
|
|
296
|
+
export interface RecommendationItemDto {
|
|
297
|
+
title: string;
|
|
298
|
+
description: string;
|
|
299
|
+
priority: RecommendationPriority;
|
|
300
|
+
}
|
|
301
|
+
export interface PerformancePatternDto {
|
|
302
|
+
strength: string;
|
|
303
|
+
frequency: number;
|
|
304
|
+
}
|
|
305
|
+
export interface ImprovementAreaDto {
|
|
306
|
+
area: string;
|
|
307
|
+
frequency: number;
|
|
308
|
+
}
|
|
309
|
+
export interface RecommendationsResponseDto {
|
|
310
|
+
recommendations: RecommendationItemDto[];
|
|
311
|
+
strengths: PerformancePatternDto[];
|
|
312
|
+
improvementAreas: ImprovementAreaDto[];
|
|
313
|
+
summary: string;
|
|
314
|
+
callsAnalyzed: number;
|
|
315
|
+
generatedAt: Date;
|
|
316
|
+
}
|
|
317
|
+
export declare enum PdfSlidesStatus {
|
|
318
|
+
PENDING = "pending",
|
|
319
|
+
STARTED = "started",
|
|
320
|
+
PROCESSING = "processing",
|
|
321
|
+
OVERVIEW = "overview",
|
|
322
|
+
COMPLETED = "completed",
|
|
323
|
+
FAILED = "failed"
|
|
324
|
+
}
|
|
325
|
+
export interface CheckPdfStatusResponse {
|
|
326
|
+
status: PdfSlidesStatus;
|
|
327
|
+
processedBatches: number[];
|
|
328
|
+
totalBatches?: number;
|
|
329
|
+
}
|
|
330
|
+
export declare enum PdfSlidesSortField {
|
|
331
|
+
CREATED_AT = "createdAt",
|
|
332
|
+
FILENAME = "originalFilename",
|
|
333
|
+
TOTAL_SLIDES = "totalSlides"
|
|
334
|
+
}
|
|
335
|
+
export declare class PdfSlidesAnalysisQueryDto {
|
|
336
|
+
limit?: RecordingsLimit;
|
|
337
|
+
page?: number;
|
|
338
|
+
sort?: SortOrder;
|
|
339
|
+
sortBy?: PdfSlidesSortField;
|
|
340
|
+
}
|
|
341
|
+
export interface SlideAnalysis {
|
|
342
|
+
slideNumber: number;
|
|
343
|
+
title?: string;
|
|
344
|
+
textExtraction?: string;
|
|
345
|
+
visualDescription?: string;
|
|
346
|
+
}
|
|
347
|
+
export interface PdfSlidesDto {
|
|
348
|
+
_id: string;
|
|
349
|
+
status: PdfSlidesStatus;
|
|
350
|
+
originalFilename: string;
|
|
351
|
+
totalSlides?: number;
|
|
352
|
+
lessonOverview?: string;
|
|
353
|
+
createdAt: Date;
|
|
354
|
+
updatedAt: Date;
|
|
355
|
+
}
|
|
356
|
+
export interface PdfSlideDto {
|
|
357
|
+
_id: string;
|
|
358
|
+
status: PdfSlidesStatus;
|
|
359
|
+
originalFilename: string;
|
|
360
|
+
totalSlides?: number;
|
|
361
|
+
lessonOverview?: string;
|
|
362
|
+
slideAnalysis?: SlideAnalysis[];
|
|
363
|
+
createdAt: Date;
|
|
364
|
+
updatedAt: Date;
|
|
365
|
+
}
|
|
366
|
+
export interface AssistantImageDto {
|
|
367
|
+
_id: string;
|
|
368
|
+
imageUrl: string;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Represents the state of an active call stored in localStorage for recovery purposes.
|
|
372
|
+
* Used to detect and recover abandoned calls after page refresh.
|
|
373
|
+
*/
|
|
374
|
+
export interface ActiveCallState {
|
|
375
|
+
/**
|
|
376
|
+
* MongoDB ID of the call record
|
|
377
|
+
*/
|
|
378
|
+
callId: string;
|
|
379
|
+
/**
|
|
380
|
+
* External call provider ID
|
|
381
|
+
*/
|
|
382
|
+
externalCallId: string;
|
|
383
|
+
/**
|
|
384
|
+
* ID of the simulation this call belongs to
|
|
385
|
+
*/
|
|
386
|
+
simulationId: string;
|
|
387
|
+
/**
|
|
388
|
+
* ISO 8601 timestamp when the call was started
|
|
389
|
+
*/
|
|
390
|
+
startedAt: string;
|
|
391
|
+
/**
|
|
392
|
+
* Schema version for future compatibility
|
|
393
|
+
*/
|
|
394
|
+
version: number;
|
|
395
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PdfSlidesAnalysisQueryDto = exports.PdfSlidesSortField = exports.PdfSlidesStatus = exports.RecommendationPriority = exports.CreationPhase = exports.SimulationRecordingsDto = exports.RecordingStatus = exports.SortOrder = exports.SimulationRecordingsQueryDto = exports.CreateSimulationDto = exports.ProductConfig = exports.CharacterCreateDto = exports.ContextDto = exports.ProfessionalProfileDto = exports.PersonalityAndBehaviourDto = exports.AvatarLanguage = exports.AssistantVoiceGender = exports.SegmentType = exports.PracticeType = exports.YearOfExperience = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) 2025 ctcHealth. All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* This file is part of the ctcHealth Plato Platform, a proprietary software system developed by ctcHealth.
|
|
8
|
+
*
|
|
9
|
+
* This source code and all related materials are confidential and proprietary to ctcHealth.
|
|
10
|
+
* Unauthorized access, use, copying, modification, distribution, or disclosure is strictly prohibited
|
|
11
|
+
* and may result in disciplinary action and civil and/or criminal penalties.
|
|
12
|
+
*
|
|
13
|
+
* This software is intended solely for authorized use within ctcHealth and its designated partners.
|
|
14
|
+
*
|
|
15
|
+
* For internal use only.
|
|
16
|
+
*/
|
|
17
|
+
var YearOfExperience;
|
|
18
|
+
(function (YearOfExperience) {
|
|
19
|
+
YearOfExperience["1-5"] = "1-5 years";
|
|
20
|
+
YearOfExperience["6-10"] = "6-10 years";
|
|
21
|
+
YearOfExperience["11-20"] = "16-20 years";
|
|
22
|
+
YearOfExperience["20+"] = "20+ years";
|
|
23
|
+
})(YearOfExperience || (exports.YearOfExperience = YearOfExperience = {}));
|
|
24
|
+
var PracticeType;
|
|
25
|
+
(function (PracticeType) {
|
|
26
|
+
PracticeType["Private"] = "Private Practice";
|
|
27
|
+
PracticeType["Hospital"] = "Hospital";
|
|
28
|
+
PracticeType["AcademicMedicalCenter"] = "Academic Medical Center";
|
|
29
|
+
PracticeType["Clinic"] = "Clinic";
|
|
30
|
+
})(PracticeType || (exports.PracticeType = PracticeType = {}));
|
|
31
|
+
var SegmentType;
|
|
32
|
+
(function (SegmentType) {
|
|
33
|
+
SegmentType["Traditionalist"] = "The Traditionalist";
|
|
34
|
+
SegmentType["Innovator"] = "The Innovator";
|
|
35
|
+
SegmentType["PatientOrientedPhysician"] = "The Patient-Oriented Physician";
|
|
36
|
+
SegmentType["FinanciallyDrivenPrescriber"] = "The Financially-Driven Prescriber";
|
|
37
|
+
SegmentType["EvidencePurist"] = "The Evidence-Purist";
|
|
38
|
+
SegmentType["CostConsciousPrescriber"] = "The Cost-Conscious Prescriber";
|
|
39
|
+
})(SegmentType || (exports.SegmentType = SegmentType = {}));
|
|
40
|
+
var AssistantVoiceGender;
|
|
41
|
+
(function (AssistantVoiceGender) {
|
|
42
|
+
AssistantVoiceGender["Male"] = "Male";
|
|
43
|
+
AssistantVoiceGender["Female"] = "Female";
|
|
44
|
+
})(AssistantVoiceGender || (exports.AssistantVoiceGender = AssistantVoiceGender = {}));
|
|
45
|
+
var AvatarLanguage;
|
|
46
|
+
(function (AvatarLanguage) {
|
|
47
|
+
AvatarLanguage["English"] = "en";
|
|
48
|
+
AvatarLanguage["German"] = "de";
|
|
49
|
+
AvatarLanguage["Spanish"] = "es";
|
|
50
|
+
AvatarLanguage["Italian"] = "it";
|
|
51
|
+
AvatarLanguage["French"] = "fr";
|
|
52
|
+
AvatarLanguage["Arabic"] = "ar";
|
|
53
|
+
AvatarLanguage["Russian"] = "ru";
|
|
54
|
+
})(AvatarLanguage || (exports.AvatarLanguage = AvatarLanguage = {}));
|
|
55
|
+
class PersonalityAndBehaviourDto {
|
|
56
|
+
riskTolerance;
|
|
57
|
+
researchOrientation;
|
|
58
|
+
recognitionNeed;
|
|
59
|
+
brandLoyalty;
|
|
60
|
+
patientEmpathy;
|
|
61
|
+
}
|
|
62
|
+
exports.PersonalityAndBehaviourDto = PersonalityAndBehaviourDto;
|
|
63
|
+
class ProfessionalProfileDto {
|
|
64
|
+
practiceSettings;
|
|
65
|
+
yearOfExperience;
|
|
66
|
+
specialityAndDepartment;
|
|
67
|
+
location;
|
|
68
|
+
}
|
|
69
|
+
exports.ProfessionalProfileDto = ProfessionalProfileDto;
|
|
70
|
+
class ContextDto {
|
|
71
|
+
subSpecialityOrTherapyFocus;
|
|
72
|
+
typicalPatientMix;
|
|
73
|
+
keyClinicalDrivers;
|
|
74
|
+
}
|
|
75
|
+
exports.ContextDto = ContextDto;
|
|
76
|
+
class CharacterCreateDto {
|
|
77
|
+
name;
|
|
78
|
+
professionalProfile;
|
|
79
|
+
segment;
|
|
80
|
+
personalityAndBehaviour;
|
|
81
|
+
context;
|
|
82
|
+
assistantGender;
|
|
83
|
+
}
|
|
84
|
+
exports.CharacterCreateDto = CharacterCreateDto;
|
|
85
|
+
class ProductConfig {
|
|
86
|
+
name;
|
|
87
|
+
description;
|
|
88
|
+
}
|
|
89
|
+
exports.ProductConfig = ProductConfig;
|
|
90
|
+
class CreateSimulationDto {
|
|
91
|
+
persona;
|
|
92
|
+
product;
|
|
93
|
+
scenario;
|
|
94
|
+
objectives;
|
|
95
|
+
anticipatedObjections;
|
|
96
|
+
imageId;
|
|
97
|
+
avatarLanguage;
|
|
98
|
+
pdfSlideId;
|
|
99
|
+
isLearning;
|
|
100
|
+
}
|
|
101
|
+
exports.CreateSimulationDto = CreateSimulationDto;
|
|
102
|
+
class SimulationRecordingsQueryDto {
|
|
103
|
+
limit;
|
|
104
|
+
page;
|
|
105
|
+
sort;
|
|
106
|
+
}
|
|
107
|
+
exports.SimulationRecordingsQueryDto = SimulationRecordingsQueryDto;
|
|
108
|
+
var SortOrder;
|
|
109
|
+
(function (SortOrder) {
|
|
110
|
+
SortOrder["ASC"] = "asc";
|
|
111
|
+
SortOrder["DESC"] = "desc";
|
|
112
|
+
})(SortOrder || (exports.SortOrder = SortOrder = {}));
|
|
113
|
+
var RecordingStatus;
|
|
114
|
+
(function (RecordingStatus) {
|
|
115
|
+
RecordingStatus["STARTED"] = "STARTED";
|
|
116
|
+
RecordingStatus["PROCESSING"] = "PROCESSING";
|
|
117
|
+
RecordingStatus["FINISHED"] = "FINISHED";
|
|
118
|
+
RecordingStatus["FAILED"] = "FAILED";
|
|
119
|
+
})(RecordingStatus || (exports.RecordingStatus = RecordingStatus = {}));
|
|
120
|
+
class SimulationRecordingsDto {
|
|
121
|
+
_id;
|
|
122
|
+
createdAt;
|
|
123
|
+
recordingStatus;
|
|
124
|
+
}
|
|
125
|
+
exports.SimulationRecordingsDto = SimulationRecordingsDto;
|
|
126
|
+
var CreationPhase;
|
|
127
|
+
(function (CreationPhase) {
|
|
128
|
+
CreationPhase["QUEUED"] = "QUEUED";
|
|
129
|
+
CreationPhase["STARTING"] = "STARTING";
|
|
130
|
+
CreationPhase["BUILD_HEADER"] = "BUILD_HEADER";
|
|
131
|
+
CreationPhase["SEGMENT_SELECTED"] = "SEGMENT_SELECTED";
|
|
132
|
+
CreationPhase["BUILD_CONTEXT"] = "BUILD_CONTEXT";
|
|
133
|
+
CreationPhase["BUILD_PSYCHOGRAPHICS"] = "BUILD_PSYCHOGRAPHICS";
|
|
134
|
+
CreationPhase["BUILD_OBJECTIVES"] = "BUILD_OBJECTIVES";
|
|
135
|
+
CreationPhase["PERSONA_ASSEMBLED"] = "PERSONA_ASSEMBLED";
|
|
136
|
+
CreationPhase["CORE"] = "CORE";
|
|
137
|
+
CreationPhase["BOUNDARIES"] = "BOUNDARIES";
|
|
138
|
+
CreationPhase["SPEECH_AND_THOUGHT"] = "SPEECH_AND_THOUGHT";
|
|
139
|
+
CreationPhase["CONVERSATION_EVOLUTION"] = "CONVERSATION_EVOLUTION";
|
|
140
|
+
CreationPhase["MEMORY"] = "MEMORY";
|
|
141
|
+
CreationPhase["OBJECTION_HANDLING"] = "OBJECTION_HANDLING";
|
|
142
|
+
CreationPhase["PERFORMANCE_EVALUATION"] = "PERFORMANCE_EVALUATION";
|
|
143
|
+
CreationPhase["BEHAVIORAL_FRAMEWORKS"] = "BEHAVIORAL_FRAMEWORKS";
|
|
144
|
+
CreationPhase["FINISHED"] = "FINISHED";
|
|
145
|
+
CreationPhase["ERROR"] = "ERROR";
|
|
146
|
+
})(CreationPhase || (exports.CreationPhase = CreationPhase = {}));
|
|
147
|
+
var RecommendationPriority;
|
|
148
|
+
(function (RecommendationPriority) {
|
|
149
|
+
RecommendationPriority["HIGH"] = "high";
|
|
150
|
+
RecommendationPriority["MEDIUM"] = "medium";
|
|
151
|
+
RecommendationPriority["LOW"] = "low";
|
|
152
|
+
})(RecommendationPriority || (exports.RecommendationPriority = RecommendationPriority = {}));
|
|
153
|
+
var PdfSlidesStatus;
|
|
154
|
+
(function (PdfSlidesStatus) {
|
|
155
|
+
PdfSlidesStatus["PENDING"] = "pending";
|
|
156
|
+
PdfSlidesStatus["STARTED"] = "started";
|
|
157
|
+
PdfSlidesStatus["PROCESSING"] = "processing";
|
|
158
|
+
PdfSlidesStatus["OVERVIEW"] = "overview";
|
|
159
|
+
PdfSlidesStatus["COMPLETED"] = "completed";
|
|
160
|
+
PdfSlidesStatus["FAILED"] = "failed";
|
|
161
|
+
})(PdfSlidesStatus || (exports.PdfSlidesStatus = PdfSlidesStatus = {}));
|
|
162
|
+
var PdfSlidesSortField;
|
|
163
|
+
(function (PdfSlidesSortField) {
|
|
164
|
+
PdfSlidesSortField["CREATED_AT"] = "createdAt";
|
|
165
|
+
PdfSlidesSortField["FILENAME"] = "originalFilename";
|
|
166
|
+
PdfSlidesSortField["TOTAL_SLIDES"] = "totalSlides";
|
|
167
|
+
})(PdfSlidesSortField || (exports.PdfSlidesSortField = PdfSlidesSortField = {}));
|
|
168
|
+
class PdfSlidesAnalysisQueryDto {
|
|
169
|
+
limit;
|
|
170
|
+
page;
|
|
171
|
+
sort;
|
|
172
|
+
sortBy;
|
|
173
|
+
}
|
|
174
|
+
exports.PdfSlidesAnalysisQueryDto = PdfSlidesAnalysisQueryDto;
|
|
175
|
+
//# sourceMappingURL=plato-intefaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plato-intefaces.js","sourceRoot":"","sources":["../../../../../libs/plato-sdk/src/lib/plato-intefaces.ts"],"names":[],"mappings":"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"}
|