@doctorus/common 0.0.15 β 0.0.17
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 +327 -97
- package/lib/status/account-location-status.d.ts +43 -0
- package/lib/status/account-location-status.js +141 -0
- package/lib/status/index.d.ts +3 -0
- package/lib/status/index.js +27 -1
- package/lib/status/medical-history-status.d.ts +41 -0
- package/lib/status/medical-history-status.js +103 -0
- package/lib/status/medical-service-status.d.ts +1 -22
- package/lib/status/medical-service-status.js +2 -2
- package/lib/status/types.d.ts +36 -0
- package/lib/status/types.js +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# @doctorus/common
|
|
2
2
|
|
|
3
|
-
Common TypeScript utilities for Doctorus - A shared library
|
|
3
|
+
Common TypeScript utilities for Doctorus - A comprehensive shared library providing operations management, status handling, SSM parameters, audit logging, and internationalization across the platform.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@doctorus/common)
|
|
6
6
|
[](https://github.com/DoctorusRepoOwner/common/blob/main/LICENSE)
|
|
7
|
+
[](https://github.com/DoctorusRepoOwner/common)
|
|
7
8
|
|
|
8
9
|
## Installation
|
|
9
10
|
|
|
@@ -17,11 +18,238 @@ yarn add @doctorus/common
|
|
|
17
18
|
|
|
18
19
|
## Features
|
|
19
20
|
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
21
|
+
- π― **Operations Module** - Type-safe resource-action patterns with i18n support (English/French)
|
|
22
|
+
- π **Status Module** - Rich status management with icons, colors, and translations
|
|
23
|
+
- π **Audit Module** - Comprehensive audit logging and compliance tracking
|
|
24
|
+
- ποΈ **SSM Module** - AWS SSM Parameter Store utilities with hierarchical keys
|
|
25
|
+
- π **Internationalization** - Full bilingual support (us-EN, fr-FR) for all user-facing text
|
|
26
|
+
- π₯ **Medical Compliance** - Separate categorization for HIPAA-compliant resources
|
|
27
|
+
- β
**100% Test Coverage** - Production-ready with comprehensive testing
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import {
|
|
33
|
+
// Operations
|
|
34
|
+
Operation,
|
|
35
|
+
Action,
|
|
36
|
+
Resource,
|
|
37
|
+
getOperationLabel,
|
|
38
|
+
|
|
39
|
+
// Status
|
|
40
|
+
MedicalServiceStatus,
|
|
41
|
+
getStatusLabel,
|
|
42
|
+
getStatusIcon,
|
|
43
|
+
|
|
44
|
+
// SSM
|
|
45
|
+
buildSSMKey,
|
|
46
|
+
SSM_CATEGORIES,
|
|
47
|
+
|
|
48
|
+
// Audit
|
|
49
|
+
AuditEvent,
|
|
50
|
+
} from '@doctorus/common';
|
|
51
|
+
|
|
52
|
+
// Create and label an operation
|
|
53
|
+
const op = new Operation(Action.CREATE, Resource.PRESCRIPTION);
|
|
54
|
+
console.log(getOperationLabel(op, 'us-EN')); // "Create Prescription"
|
|
55
|
+
console.log(getOperationLabel(op, 'fr-FR')); // "CrΓ©er Ordonnance"
|
|
56
|
+
|
|
57
|
+
// Get status information
|
|
58
|
+
const status = MedicalServiceStatus.IN_PROGRESS;
|
|
59
|
+
console.log(getStatusLabel(status, 'us-EN')); // "In Progress"
|
|
60
|
+
console.log(getStatusIcon(status)); // "medical_services"
|
|
61
|
+
|
|
62
|
+
// Build SSM key
|
|
63
|
+
const key = buildSSMKey({
|
|
64
|
+
environment: 'production',
|
|
65
|
+
application: 'doctorus',
|
|
66
|
+
category: SSM_CATEGORIES.DATABASE,
|
|
67
|
+
subcategory: 'postgres',
|
|
68
|
+
name: 'connection-string',
|
|
69
|
+
});
|
|
70
|
+
// "/production/doctorus/database/postgres/connection-string"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Modules Overview
|
|
74
|
+
|
|
75
|
+
### π― [Operations Module](src/operations/README.md)
|
|
76
|
+
|
|
77
|
+
Resource-action based system for permissions, operations, and audit logging with full internationalization.
|
|
78
|
+
|
|
79
|
+
**Key Features:**
|
|
80
|
+
|
|
81
|
+
- 67 predefined actions (CRUD, medical-specific, system operations)
|
|
82
|
+
- 49 categorized resources (medical + public)
|
|
83
|
+
- Bilingual labels (English/French)
|
|
84
|
+
- Predefined operation combinations
|
|
85
|
+
- Resource categorization helpers
|
|
86
|
+
|
|
87
|
+
**Quick Example:**
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { Action, Resource, getActionLabel, isMedicalResource } from '@doctorus/common';
|
|
91
|
+
|
|
92
|
+
const action = Action.PRESCRIBE;
|
|
93
|
+
console.log(getActionLabel(action, 'us-EN')); // "Prescribe"
|
|
94
|
+
console.log(getActionLabel(action, 'fr-FR')); // "Prescrire"
|
|
95
|
+
|
|
96
|
+
console.log(isMedicalResource(Resource.PATIENT)); // true
|
|
97
|
+
console.log(isMedicalResource(Resource.ACCOUNT)); // false
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
[π Full Operations Documentation](src/operations/README.md)
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### π [Status Module](src/status/README.md)
|
|
105
|
+
|
|
106
|
+
Comprehensive status management with rich metadata, visual elements, and validation.
|
|
107
|
+
|
|
108
|
+
**Key Features:**
|
|
109
|
+
|
|
110
|
+
- Type-safe status enums
|
|
111
|
+
- Material Design icons and color schemes
|
|
112
|
+
- Short and long labels in English/French
|
|
113
|
+
- Detailed descriptions
|
|
114
|
+
- Status transition validation
|
|
115
|
+
- Reusable pattern for multiple entity types
|
|
116
|
+
|
|
117
|
+
**Quick Example:**
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import {
|
|
121
|
+
MedicalServiceStatus,
|
|
122
|
+
getStatusLabel,
|
|
123
|
+
getStatusColor,
|
|
124
|
+
getStatusIcon,
|
|
125
|
+
isValidTransition,
|
|
126
|
+
} from '@doctorus/common';
|
|
127
|
+
|
|
128
|
+
const status = MedicalServiceStatus.IN_PROGRESS;
|
|
129
|
+
console.log(getStatusLabel(status, 'us-EN', 'long')); // "Service In Progress"
|
|
130
|
+
console.log(getStatusColor(status)); // "#2196F3"
|
|
131
|
+
console.log(getStatusIcon(status)); // "medical_services"
|
|
132
|
+
|
|
133
|
+
// Validate transitions
|
|
134
|
+
isValidTransition(MedicalServiceStatus.PENDING, MedicalServiceStatus.IN_PROGRESS); // true
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
[π Full Status Documentation](src/status/README.md)
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### π [Audit Module](src/audit/README.md)
|
|
142
|
+
|
|
143
|
+
Enterprise-grade audit logging for compliance, security, and debugging.
|
|
144
|
+
|
|
145
|
+
**Key Features:**
|
|
146
|
+
|
|
147
|
+
- Comprehensive event tracking
|
|
148
|
+
- User and system action logging
|
|
149
|
+
- Data change tracking (before/after states)
|
|
150
|
+
- Correlation and tracing support
|
|
151
|
+
- HIPAA/GDPR compliance ready
|
|
152
|
+
- Integration with Operations module
|
|
153
|
+
|
|
154
|
+
**Quick Example:**
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { AuditEvent, Action, Resource } from '@doctorus/common';
|
|
158
|
+
|
|
159
|
+
const event: AuditEvent = {
|
|
160
|
+
id: uuidv4(),
|
|
161
|
+
timestamp: new Date(),
|
|
162
|
+
userId: 'user-123',
|
|
163
|
+
action: Action.CREATE,
|
|
164
|
+
resource: Resource.PRESCRIPTION,
|
|
165
|
+
resourceId: 'prescription-789',
|
|
166
|
+
result: 'success',
|
|
167
|
+
metadata: { medication: 'Amoxicillin' },
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
await auditLogger.log(event);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
[π Full Audit Documentation](src/audit/README.md)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### ποΈ [SSM Module](src/ssm/README.md)
|
|
178
|
+
|
|
179
|
+
Type-safe AWS Systems Manager Parameter Store key management.
|
|
180
|
+
|
|
181
|
+
**Key Features:**
|
|
182
|
+
|
|
183
|
+
- Hierarchical key structure
|
|
184
|
+
- Environment-aware configuration
|
|
185
|
+
- Key parsing and validation
|
|
186
|
+
- Predefined key categories
|
|
187
|
+
- Prefix building for batch operations
|
|
188
|
+
|
|
189
|
+
**Quick Example:**
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
import { buildSSMKey, parseSSMKey, SSM_CATEGORIES } from '@doctorus/common';
|
|
193
|
+
|
|
194
|
+
// Build a key
|
|
195
|
+
const key = buildSSMKey({
|
|
196
|
+
environment: 'production',
|
|
197
|
+
application: 'doctorus',
|
|
198
|
+
category: SSM_CATEGORIES.API,
|
|
199
|
+
subcategory: 'stripe',
|
|
200
|
+
name: 'secret-key',
|
|
201
|
+
});
|
|
202
|
+
// "/production/doctorus/api/stripe/secret-key"
|
|
203
|
+
|
|
204
|
+
// Parse a key
|
|
205
|
+
const parsed = parseSSMKey(key);
|
|
206
|
+
console.log(parsed.category); // "api"
|
|
207
|
+
console.log(parsed.subcategory); // "stripe"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
[π Full SSM Documentation](src/ssm/README.md)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Internationalization (i18n)
|
|
215
|
+
|
|
216
|
+
All user-facing text supports English (us-EN) and French (fr-FR):
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
import { getActionLabel, getResourceLabel, getStatusLabel } from '@doctorus/common';
|
|
220
|
+
|
|
221
|
+
// Action labels
|
|
222
|
+
getActionLabel(Action.CREATE, 'us-EN'); // "Create"
|
|
223
|
+
getActionLabel(Action.CREATE, 'fr-FR'); // "CrΓ©er"
|
|
224
|
+
|
|
225
|
+
// Resource labels
|
|
226
|
+
getResourceLabel(Resource.PATIENT, 'us-EN'); // "Patient"
|
|
227
|
+
getResourceLabel(Resource.PATIENT, 'fr-FR'); // "Patient"
|
|
228
|
+
|
|
229
|
+
// Status labels
|
|
230
|
+
getStatusLabel(MedicalServiceStatus.COMPLETED, 'us-EN'); // "Completed"
|
|
231
|
+
getStatusLabel(MedicalServiceStatus.COMPLETED, 'fr-FR'); // "TerminΓ©"
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Medical Service Status Actions
|
|
235
|
+
|
|
236
|
+
Special actions for medical service workflow management:
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
import { Action } from '@doctorus/common';
|
|
240
|
+
|
|
241
|
+
// Status transition actions
|
|
242
|
+
Action.CHECK_IN; // Move patient to waiting room
|
|
243
|
+
Action.UNDO_CHECK_IN; // Revert check-in
|
|
244
|
+
Action.START_SERVICE; // Begin consultation
|
|
245
|
+
Action.UNSTART_SERVICE; // Undo service start
|
|
246
|
+
Action.COMPLETE_SERVICE; // Mark as completed
|
|
247
|
+
Action.REOPEN_COMPLETED_SERVICE; // Reopen completed service
|
|
248
|
+
Action.CANCEL_SERVICE; // Cancel the service
|
|
249
|
+
Action.UNDO_CANCEL_SERVICE; // Uncancel
|
|
250
|
+
Action.FORCE_RESET_STATUS; // Admin: reset all (dangerous)
|
|
251
|
+
Action.CORRECT_TIMESTAMPS; // Admin: modify timestamps
|
|
252
|
+
```
|
|
25
253
|
|
|
26
254
|
## Modules
|
|
27
255
|
|
|
@@ -43,7 +271,7 @@ const customOp = new Operation(Resource.PRESCRIPTION, Action.PRESCRIBE);
|
|
|
43
271
|
console.log(customOp.toString()); // "PRESCRIPTION:PRESCRIBE"
|
|
44
272
|
|
|
45
273
|
// Parse from string
|
|
46
|
-
const parsed = Operation.fromString(
|
|
274
|
+
const parsed = Operation.fromString('MEDICAL_SERVICE:SCHEDULE');
|
|
47
275
|
if (parsed) {
|
|
48
276
|
console.log(parsed.resource); // Resource.MEDICAL_SERVICE
|
|
49
277
|
console.log(parsed.action); // Action.SCHEDULE
|
|
@@ -64,6 +292,7 @@ const json = operation.toJSON();
|
|
|
64
292
|
Resources are categorized as **Medical** (require special access control) or **Public** (standard access control):
|
|
65
293
|
|
|
66
294
|
**Medical Resources:**
|
|
295
|
+
|
|
67
296
|
- Patient: `PATIENT`, `PATIENT_MEDICAL_NOTES`, `PATIENT_MEDICAL_PROPERTIES`, `PATIENT_PAYMENT`
|
|
68
297
|
- Medical Services: `MEDICAL_SERVICE`, `MEDICAL_SERVICE_NOTE`, `MEDICAL_SERVICE_SCHEDULE`, `MEDICAL_SERVICE_FEES`, `MEDICAL_SERVICE_STATUS`
|
|
69
298
|
- Clinical: `MEDICAL_RECORD`, `MEDICAL_HISTORY`, `PRESCRIPTION`, `DIAGNOSIS`, `OBSERVATION`, `MEDICATION`, `ALLERGY`, `IMMUNIZATION`, `PROCEDURE`
|
|
@@ -71,6 +300,7 @@ Resources are categorized as **Medical** (require special access control) or **P
|
|
|
71
300
|
- Diagnostics: `LAB_RESULT`, `IMAGING`
|
|
72
301
|
|
|
73
302
|
**Public Resources:**
|
|
303
|
+
|
|
74
304
|
- Account: `ACCOUNT`, `ACCOUNT_OWNERSHIP`, `ACCOUNT_PREFERENCES`
|
|
75
305
|
- User: `USER`, `CONTACT`
|
|
76
306
|
- Documents: `UPLOADED_DOCUMENT`, `DOCUMENT_LAYOUT`, `GENERATED_DOCUMENT`, `DOCUMENT_MODEL`, `SNIPPET`
|
|
@@ -80,39 +310,43 @@ Resources are categorized as **Medical** (require special access control) or **P
|
|
|
80
310
|
|
|
81
311
|
```typescript
|
|
82
312
|
// CRUD operations
|
|
83
|
-
Action.CREATE, Action.READ, Action.UPDATE, Action.DELETE, Action.PUT, Action.LIST
|
|
313
|
+
(Action.CREATE, Action.READ, Action.UPDATE, Action.DELETE, Action.PUT, Action.LIST);
|
|
84
314
|
|
|
85
315
|
// General actions
|
|
86
|
-
Action.MANAGE, Action.VIEW, Action.SEARCH
|
|
316
|
+
(Action.MANAGE, Action.VIEW, Action.SEARCH);
|
|
87
317
|
|
|
88
318
|
// Medical-specific actions
|
|
89
|
-
Action.PRESCRIBE,
|
|
90
|
-
Action.
|
|
319
|
+
(Action.PRESCRIBE,
|
|
320
|
+
Action.DIAGNOSE,
|
|
321
|
+
Action.SIGN,
|
|
322
|
+
Action.VERIFY,
|
|
323
|
+
Action.SCHEDULE,
|
|
324
|
+
Action.CANCEL,
|
|
325
|
+
Action.APPROVE,
|
|
326
|
+
Action.REJECT);
|
|
91
327
|
|
|
92
328
|
// Medical service actions
|
|
93
|
-
Action.SET_MEDICAL_SERVICE_STATUS, Action.SET_MEDICAL_SERVICE_FEES
|
|
329
|
+
(Action.SET_MEDICAL_SERVICE_STATUS, Action.SET_MEDICAL_SERVICE_FEES);
|
|
94
330
|
|
|
95
331
|
// Patient-specific actions
|
|
96
|
-
Action.UPDATE_STATUS, Action.VIEW_PATIENTS,
|
|
97
|
-
Action.PUT_PATIENT_PAYMENT, Action.DELETE_PATIENT_PAYMENT
|
|
332
|
+
(Action.UPDATE_STATUS, Action.VIEW_PATIENTS, Action.PUT_PATIENT_PAYMENT, Action.DELETE_PATIENT_PAYMENT);
|
|
98
333
|
|
|
99
334
|
// Data operations
|
|
100
|
-
Action.EXPORT, Action.IMPORT, Action.ARCHIVE, Action.RESTORE,
|
|
101
|
-
Action.SHARE, Action.DOWNLOAD, Action.UPLOAD
|
|
335
|
+
(Action.EXPORT, Action.IMPORT, Action.ARCHIVE, Action.RESTORE, Action.SHARE, Action.DOWNLOAD, Action.UPLOAD);
|
|
102
336
|
|
|
103
337
|
// System operations
|
|
104
|
-
Action.LOGIN, Action.LOGOUT, Action.CONFIGURE, Action.AUDIT
|
|
338
|
+
(Action.LOGIN, Action.LOGOUT, Action.CONFIGURE, Action.AUDIT);
|
|
105
339
|
```
|
|
106
340
|
|
|
107
341
|
#### Helper Functions
|
|
108
342
|
|
|
109
343
|
```typescript
|
|
110
|
-
import {
|
|
111
|
-
isMedicalResource,
|
|
344
|
+
import {
|
|
345
|
+
isMedicalResource,
|
|
112
346
|
isPublicResource,
|
|
113
347
|
getAllOperations,
|
|
114
348
|
getOperationsByResource,
|
|
115
|
-
getOperationsByAction
|
|
349
|
+
getOperationsByAction,
|
|
116
350
|
} from '@doctorus/common';
|
|
117
351
|
|
|
118
352
|
// Check resource type
|
|
@@ -142,29 +376,46 @@ Commonly used operations are predefined for convenience:
|
|
|
142
376
|
|
|
143
377
|
```typescript
|
|
144
378
|
// Account operations
|
|
145
|
-
Operations.ACCOUNT_CREATE,
|
|
146
|
-
Operations.
|
|
379
|
+
(Operations.ACCOUNT_CREATE,
|
|
380
|
+
Operations.ACCOUNT_READ,
|
|
381
|
+
Operations.ACCOUNT_UPDATE,
|
|
382
|
+
Operations.ACCOUNT_DELETE,
|
|
383
|
+
Operations.ACCOUNT_MANAGE);
|
|
147
384
|
|
|
148
385
|
// Patient operations
|
|
149
|
-
Operations.PATIENT_CREATE,
|
|
150
|
-
Operations.
|
|
151
|
-
Operations.
|
|
386
|
+
(Operations.PATIENT_CREATE,
|
|
387
|
+
Operations.PATIENT_READ,
|
|
388
|
+
Operations.PATIENT_UPDATE,
|
|
389
|
+
Operations.PATIENT_DELETE,
|
|
390
|
+
Operations.PATIENT_LIST,
|
|
391
|
+
Operations.PATIENT_VIEW,
|
|
392
|
+
Operations.PATIENT_UPDATE_STATUS);
|
|
152
393
|
|
|
153
394
|
// Medical service operations
|
|
154
|
-
Operations.MEDICAL_SERVICE_CREATE,
|
|
155
|
-
Operations.
|
|
156
|
-
Operations.
|
|
157
|
-
Operations.
|
|
158
|
-
Operations.
|
|
395
|
+
(Operations.MEDICAL_SERVICE_CREATE,
|
|
396
|
+
Operations.MEDICAL_SERVICE_READ,
|
|
397
|
+
Operations.MEDICAL_SERVICE_UPDATE,
|
|
398
|
+
Operations.MEDICAL_SERVICE_DELETE,
|
|
399
|
+
Operations.MEDICAL_SERVICE_MANAGE,
|
|
400
|
+
Operations.MEDICAL_SERVICE_SCHEDULE,
|
|
401
|
+
Operations.MEDICAL_SERVICE_CANCEL,
|
|
402
|
+
Operations.MEDICAL_SERVICE_SET_STATUS,
|
|
403
|
+
Operations.MEDICAL_SERVICE_SET_FEES);
|
|
159
404
|
|
|
160
405
|
// Prescription operations
|
|
161
|
-
Operations.PRESCRIPTION_CREATE,
|
|
162
|
-
Operations.
|
|
163
|
-
Operations.
|
|
406
|
+
(Operations.PRESCRIPTION_CREATE,
|
|
407
|
+
Operations.PRESCRIPTION_READ,
|
|
408
|
+
Operations.PRESCRIPTION_UPDATE,
|
|
409
|
+
Operations.PRESCRIPTION_SIGN,
|
|
410
|
+
Operations.PRESCRIPTION_PRESCRIBE);
|
|
164
411
|
|
|
165
412
|
// User operations
|
|
166
|
-
Operations.USER_CREATE,
|
|
167
|
-
Operations.
|
|
413
|
+
(Operations.USER_CREATE,
|
|
414
|
+
Operations.USER_READ,
|
|
415
|
+
Operations.USER_UPDATE,
|
|
416
|
+
Operations.USER_DELETE,
|
|
417
|
+
Operations.USER_LOGIN,
|
|
418
|
+
Operations.USER_LOGOUT);
|
|
168
419
|
|
|
169
420
|
// ... and many more
|
|
170
421
|
```
|
|
@@ -176,13 +427,13 @@ Utilities for managing AWS SSM Parameter Store keys with environment support.
|
|
|
176
427
|
#### Basic Usage
|
|
177
428
|
|
|
178
429
|
```typescript
|
|
179
|
-
import {
|
|
180
|
-
SSM_PARAM_KEY,
|
|
181
|
-
buildSSMPath,
|
|
430
|
+
import {
|
|
431
|
+
SSM_PARAM_KEY,
|
|
432
|
+
buildSSMPath,
|
|
182
433
|
buildSSMPathWithPrefix,
|
|
183
434
|
extractEnvFromPath,
|
|
184
435
|
extractKeyFromPath,
|
|
185
|
-
isEnvAgnostic
|
|
436
|
+
isEnvAgnostic,
|
|
186
437
|
} from '@doctorus/common';
|
|
187
438
|
|
|
188
439
|
// Build environment-specific path
|
|
@@ -194,10 +445,7 @@ const sharedPath = buildSSMPath(null, SSM_PARAM_KEY.DB_USER);
|
|
|
194
445
|
console.log(sharedPath); // "/db-user"
|
|
195
446
|
|
|
196
447
|
// Build path with custom prefix
|
|
197
|
-
const customPath = buildSSMPathWithPrefix(
|
|
198
|
-
'/myapp/prod',
|
|
199
|
-
SSM_PARAM_KEY.GRAPHQL_API_ID
|
|
200
|
-
);
|
|
448
|
+
const customPath = buildSSMPathWithPrefix('/myapp/prod', SSM_PARAM_KEY.GRAPHQL_API_ID);
|
|
201
449
|
console.log(customPath); // "/myapp/prod/graphql-api-id"
|
|
202
450
|
|
|
203
451
|
// Extract environment from path
|
|
@@ -216,28 +464,28 @@ console.log(isEnvAgnostic('/prod/user-pool-id')); // false
|
|
|
216
464
|
#### Available SSM Parameter Keys
|
|
217
465
|
|
|
218
466
|
```typescript
|
|
219
|
-
SSM_PARAM_KEY.COGNITO_USER_POOL_ID
|
|
220
|
-
SSM_PARAM_KEY.COGNITO_USER_POOL_WEB_CLIENT_ID
|
|
221
|
-
SSM_PARAM_KEY.COGNITO_OAUTH_DOMAIN
|
|
222
|
-
SSM_PARAM_KEY.RUM_GUEST_ROLE_ARN
|
|
223
|
-
SSM_PARAM_KEY.RUM_IDENTITY_POOL_ID
|
|
224
|
-
SSM_PARAM_KEY.RUM_APP_ID
|
|
225
|
-
SSM_PARAM_KEY.GRAPHQL_HTTP_URL
|
|
226
|
-
SSM_PARAM_KEY.GRAPHQL_WS_URL
|
|
227
|
-
SSM_PARAM_KEY.GRAPHQL_HOST
|
|
228
|
-
SSM_PARAM_KEY.GRAPHQL_API_ID
|
|
229
|
-
SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY
|
|
230
|
-
SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID
|
|
231
|
-
SSM_PARAM_KEY.MEDICAL_ASSETS_BUCKET_NAME
|
|
232
|
-
SSM_PARAM_KEY.PUBLIC_ASSETS_BUCKET_NAME
|
|
233
|
-
SSM_PARAM_KEY.DB_USER
|
|
234
|
-
SSM_PARAM_KEY.DB_PASSWORD
|
|
235
|
-
SSM_PARAM_KEY.MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME
|
|
236
|
-
SSM_PARAM_KEY.BASE_HOST
|
|
237
|
-
SSM_PARAM_KEY.EMAIL_FROM_ADDRESS
|
|
238
|
-
SSM_PARAM_KEY.EVENT_API_REAL_TIME_DNS
|
|
239
|
-
SSM_PARAM_KEY.EVENT_API_HTTP_DNS
|
|
240
|
-
SSM_PARAM_KEY.NOTIFIED_EVENT_ACTIONS
|
|
467
|
+
SSM_PARAM_KEY.COGNITO_USER_POOL_ID;
|
|
468
|
+
SSM_PARAM_KEY.COGNITO_USER_POOL_WEB_CLIENT_ID;
|
|
469
|
+
SSM_PARAM_KEY.COGNITO_OAUTH_DOMAIN;
|
|
470
|
+
SSM_PARAM_KEY.RUM_GUEST_ROLE_ARN;
|
|
471
|
+
SSM_PARAM_KEY.RUM_IDENTITY_POOL_ID;
|
|
472
|
+
SSM_PARAM_KEY.RUM_APP_ID;
|
|
473
|
+
SSM_PARAM_KEY.GRAPHQL_HTTP_URL;
|
|
474
|
+
SSM_PARAM_KEY.GRAPHQL_WS_URL;
|
|
475
|
+
SSM_PARAM_KEY.GRAPHQL_HOST;
|
|
476
|
+
SSM_PARAM_KEY.GRAPHQL_API_ID;
|
|
477
|
+
SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY;
|
|
478
|
+
SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID;
|
|
479
|
+
SSM_PARAM_KEY.MEDICAL_ASSETS_BUCKET_NAME;
|
|
480
|
+
SSM_PARAM_KEY.PUBLIC_ASSETS_BUCKET_NAME;
|
|
481
|
+
SSM_PARAM_KEY.DB_USER;
|
|
482
|
+
SSM_PARAM_KEY.DB_PASSWORD;
|
|
483
|
+
SSM_PARAM_KEY.MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME;
|
|
484
|
+
SSM_PARAM_KEY.BASE_HOST;
|
|
485
|
+
SSM_PARAM_KEY.EMAIL_FROM_ADDRESS;
|
|
486
|
+
SSM_PARAM_KEY.EVENT_API_REAL_TIME_DNS;
|
|
487
|
+
SSM_PARAM_KEY.EVENT_API_HTTP_DNS;
|
|
488
|
+
SSM_PARAM_KEY.NOTIFIED_EVENT_ACTIONS;
|
|
241
489
|
```
|
|
242
490
|
|
|
243
491
|
## Use Cases
|
|
@@ -250,21 +498,18 @@ import { Operation, isMedicalResource } from '@doctorus/common';
|
|
|
250
498
|
function checkPermission(userPermissions: string[], operation: Operation): boolean {
|
|
251
499
|
// Check if user has permission for this operation
|
|
252
500
|
const hasPermission = userPermissions.includes(operation.toString());
|
|
253
|
-
|
|
501
|
+
|
|
254
502
|
// Apply additional checks for medical resources
|
|
255
503
|
if (isMedicalResource(operation.resource)) {
|
|
256
504
|
// Enforce HIPAA compliance, additional logging, etc.
|
|
257
505
|
return hasPermission && user.hasHIPAAAccess;
|
|
258
506
|
}
|
|
259
|
-
|
|
507
|
+
|
|
260
508
|
return hasPermission;
|
|
261
509
|
}
|
|
262
510
|
|
|
263
511
|
// Usage
|
|
264
|
-
const canRead = checkPermission(
|
|
265
|
-
userPermissions,
|
|
266
|
-
Operations.PATIENT_READ
|
|
267
|
-
);
|
|
512
|
+
const canRead = checkPermission(userPermissions, Operations.PATIENT_READ);
|
|
268
513
|
```
|
|
269
514
|
|
|
270
515
|
### 2. Audit Logging
|
|
@@ -280,20 +525,15 @@ interface AuditLog {
|
|
|
280
525
|
success: boolean;
|
|
281
526
|
}
|
|
282
527
|
|
|
283
|
-
function logAudit(
|
|
284
|
-
userId: string,
|
|
285
|
-
operation: Operation,
|
|
286
|
-
resourceId: string,
|
|
287
|
-
success: boolean
|
|
288
|
-
) {
|
|
528
|
+
function logAudit(userId: string, operation: Operation, resourceId: string, success: boolean) {
|
|
289
529
|
const log: AuditLog = {
|
|
290
530
|
timestamp: new Date(),
|
|
291
531
|
userId,
|
|
292
532
|
operation: operation.toString(),
|
|
293
533
|
resourceId,
|
|
294
|
-
success
|
|
534
|
+
success,
|
|
295
535
|
};
|
|
296
|
-
|
|
536
|
+
|
|
297
537
|
// Store in audit log database
|
|
298
538
|
auditLogService.create(log);
|
|
299
539
|
}
|
|
@@ -311,15 +551,9 @@ import { StringParameter } from 'aws-cdk-lib/aws-ssm';
|
|
|
311
551
|
// In your CDK stack
|
|
312
552
|
const env = 'prod';
|
|
313
553
|
|
|
314
|
-
const userPoolId = StringParameter.valueFromLookup(
|
|
315
|
-
this,
|
|
316
|
-
buildSSMPath(env, SSM_PARAM_KEY.COGNITO_USER_POOL_ID)
|
|
317
|
-
);
|
|
554
|
+
const userPoolId = StringParameter.valueFromLookup(this, buildSSMPath(env, SSM_PARAM_KEY.COGNITO_USER_POOL_ID));
|
|
318
555
|
|
|
319
|
-
const graphqlUrl = StringParameter.valueFromLookup(
|
|
320
|
-
this,
|
|
321
|
-
buildSSMPath(env, SSM_PARAM_KEY.GRAPHQL_HTTP_URL)
|
|
322
|
-
);
|
|
556
|
+
const graphqlUrl = StringParameter.valueFromLookup(this, buildSSMPath(env, SSM_PARAM_KEY.GRAPHQL_HTTP_URL));
|
|
323
557
|
```
|
|
324
558
|
|
|
325
559
|
### 4. Frontend Configuration
|
|
@@ -330,21 +564,17 @@ import { SSM } from '@aws-sdk/client-ssm';
|
|
|
330
564
|
|
|
331
565
|
async function loadConfig(environment: string) {
|
|
332
566
|
const ssm = new SSM();
|
|
333
|
-
|
|
334
|
-
const params = [
|
|
335
|
-
|
|
336
|
-
SSM_PARAM_KEY.GRAPHQL_HTTP_URL,
|
|
337
|
-
SSM_PARAM_KEY.RUM_APP_ID
|
|
338
|
-
];
|
|
339
|
-
|
|
567
|
+
|
|
568
|
+
const params = [SSM_PARAM_KEY.COGNITO_USER_POOL_ID, SSM_PARAM_KEY.GRAPHQL_HTTP_URL, SSM_PARAM_KEY.RUM_APP_ID];
|
|
569
|
+
|
|
340
570
|
const config: Record<string, string> = {};
|
|
341
|
-
|
|
571
|
+
|
|
342
572
|
for (const param of params) {
|
|
343
573
|
const path = buildSSMPath(environment, param);
|
|
344
574
|
const response = await ssm.getParameter({ Name: path });
|
|
345
575
|
config[param] = response.Parameter?.Value || '';
|
|
346
576
|
}
|
|
347
|
-
|
|
577
|
+
|
|
348
578
|
return config;
|
|
349
579
|
}
|
|
350
580
|
```
|
|
@@ -388,4 +618,4 @@ Apache-2.0
|
|
|
388
618
|
|
|
389
619
|
---
|
|
390
620
|
|
|
391
|
-
Built with β€οΈ for Doctorus
|
|
621
|
+
Built with β€οΈ for Doctorus
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account Location Status enumeration and metadata
|
|
3
|
+
* Defines availability policies for medical service locations
|
|
4
|
+
*/
|
|
5
|
+
import type { StatusMetadata, Locale } from './types';
|
|
6
|
+
export declare enum AccountLocationStatus {
|
|
7
|
+
INHERIT = "inherit",
|
|
8
|
+
ALWAYS_OPEN = "always_open",
|
|
9
|
+
CLOSED = "closed",
|
|
10
|
+
PERIODS = "periods"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Account Location Status metadata configuration
|
|
14
|
+
*/
|
|
15
|
+
export declare const ACCOUNT_LOCATION_STATUS_METADATA: Record<AccountLocationStatus, StatusMetadata>;
|
|
16
|
+
/**
|
|
17
|
+
* Get status metadata
|
|
18
|
+
*/
|
|
19
|
+
export declare function getStatusMetadata(status: AccountLocationStatus): StatusMetadata;
|
|
20
|
+
/**
|
|
21
|
+
* Get status icon
|
|
22
|
+
*/
|
|
23
|
+
export declare function getStatusIcon(status: AccountLocationStatus): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get status color
|
|
26
|
+
*/
|
|
27
|
+
export declare function getStatusColor(status: AccountLocationStatus): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get status label (short or long)
|
|
30
|
+
*/
|
|
31
|
+
export declare function getStatusLabel(status: AccountLocationStatus, locale?: Locale, format?: 'short' | 'long'): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get status description
|
|
34
|
+
*/
|
|
35
|
+
export declare function getStatusDescription(status: AccountLocationStatus, locale?: Locale): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get all available statuses
|
|
38
|
+
*/
|
|
39
|
+
export declare function getAllAccountLocationStatuses(): AccountLocationStatus[];
|
|
40
|
+
/**
|
|
41
|
+
* Check if a value is a valid AccountLocationStatus
|
|
42
|
+
*/
|
|
43
|
+
export declare function isValidAccountLocationStatus(value: string): value is AccountLocationStatus;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Account Location Status enumeration and metadata
|
|
4
|
+
* Defines availability policies for medical service locations
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ACCOUNT_LOCATION_STATUS_METADATA = exports.AccountLocationStatus = void 0;
|
|
8
|
+
exports.getStatusMetadata = getStatusMetadata;
|
|
9
|
+
exports.getStatusIcon = getStatusIcon;
|
|
10
|
+
exports.getStatusColor = getStatusColor;
|
|
11
|
+
exports.getStatusLabel = getStatusLabel;
|
|
12
|
+
exports.getStatusDescription = getStatusDescription;
|
|
13
|
+
exports.getAllAccountLocationStatuses = getAllAccountLocationStatuses;
|
|
14
|
+
exports.isValidAccountLocationStatus = isValidAccountLocationStatus;
|
|
15
|
+
var AccountLocationStatus;
|
|
16
|
+
(function (AccountLocationStatus) {
|
|
17
|
+
AccountLocationStatus["INHERIT"] = "inherit";
|
|
18
|
+
AccountLocationStatus["ALWAYS_OPEN"] = "always_open";
|
|
19
|
+
AccountLocationStatus["CLOSED"] = "closed";
|
|
20
|
+
AccountLocationStatus["PERIODS"] = "periods";
|
|
21
|
+
})(AccountLocationStatus || (exports.AccountLocationStatus = AccountLocationStatus = {}));
|
|
22
|
+
/**
|
|
23
|
+
* Account Location Status metadata configuration
|
|
24
|
+
*/
|
|
25
|
+
exports.ACCOUNT_LOCATION_STATUS_METADATA = {
|
|
26
|
+
[AccountLocationStatus.INHERIT]: {
|
|
27
|
+
icon: 'settings_backup_restore',
|
|
28
|
+
color: '#808080', // Gray
|
|
29
|
+
label: {
|
|
30
|
+
short: {
|
|
31
|
+
'us-EN': 'Inherit',
|
|
32
|
+
'fr-FR': 'HΓ©riter',
|
|
33
|
+
},
|
|
34
|
+
long: {
|
|
35
|
+
'us-EN': 'Inherit Settings',
|
|
36
|
+
'fr-FR': 'Hériter des paramètres',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
description: {
|
|
40
|
+
'us-EN': 'Location inherits availability settings from parent',
|
|
41
|
+
'fr-FR': 'Le lieu hérite les paramètres de disponibilité du parent',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
[AccountLocationStatus.ALWAYS_OPEN]: {
|
|
45
|
+
icon: 'public',
|
|
46
|
+
color: '#4CAF50', // Green
|
|
47
|
+
label: {
|
|
48
|
+
short: {
|
|
49
|
+
'us-EN': 'Always Open',
|
|
50
|
+
'fr-FR': 'Toujours ouvert',
|
|
51
|
+
},
|
|
52
|
+
long: {
|
|
53
|
+
'us-EN': 'Always Open',
|
|
54
|
+
'fr-FR': 'Toujours ouvert',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
description: {
|
|
58
|
+
'us-EN': 'Location is available 24/7 without restrictions',
|
|
59
|
+
'fr-FR': 'Le lieu est disponible 24h/24, 7j/7 sans restrictions',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
[AccountLocationStatus.CLOSED]: {
|
|
63
|
+
icon: 'block',
|
|
64
|
+
color: '#F44336', // Red
|
|
65
|
+
label: {
|
|
66
|
+
short: {
|
|
67
|
+
'us-EN': 'Closed',
|
|
68
|
+
'fr-FR': 'FermΓ©',
|
|
69
|
+
},
|
|
70
|
+
long: {
|
|
71
|
+
'us-EN': 'Closed',
|
|
72
|
+
'fr-FR': 'FermΓ©',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
description: {
|
|
76
|
+
'us-EN': 'Location is closed and unavailable for services',
|
|
77
|
+
'fr-FR': 'Le lieu est fermΓ© et indisponible pour les services',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
[AccountLocationStatus.PERIODS]: {
|
|
81
|
+
icon: 'schedule',
|
|
82
|
+
color: '#2196F3', // Blue
|
|
83
|
+
label: {
|
|
84
|
+
short: {
|
|
85
|
+
'us-EN': 'Periods',
|
|
86
|
+
'fr-FR': 'PΓ©riodes',
|
|
87
|
+
},
|
|
88
|
+
long: {
|
|
89
|
+
'us-EN': 'Custom Periods',
|
|
90
|
+
'fr-FR': 'PΓ©riodes personnalisΓ©es',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
description: {
|
|
94
|
+
'us-EN': 'Location has custom availability periods',
|
|
95
|
+
'fr-FR': 'Le lieu a des pΓ©riodes de disponibilitΓ© personnalisΓ©es',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Get status metadata
|
|
101
|
+
*/
|
|
102
|
+
function getStatusMetadata(status) {
|
|
103
|
+
return exports.ACCOUNT_LOCATION_STATUS_METADATA[status];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get status icon
|
|
107
|
+
*/
|
|
108
|
+
function getStatusIcon(status) {
|
|
109
|
+
return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].icon;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get status color
|
|
113
|
+
*/
|
|
114
|
+
function getStatusColor(status) {
|
|
115
|
+
return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].color;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get status label (short or long)
|
|
119
|
+
*/
|
|
120
|
+
function getStatusLabel(status, locale = 'us-EN', format = 'short') {
|
|
121
|
+
return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].label[format][locale];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get status description
|
|
125
|
+
*/
|
|
126
|
+
function getStatusDescription(status, locale = 'us-EN') {
|
|
127
|
+
return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].description[locale];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get all available statuses
|
|
131
|
+
*/
|
|
132
|
+
function getAllAccountLocationStatuses() {
|
|
133
|
+
return Object.values(AccountLocationStatus);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Check if a value is a valid AccountLocationStatus
|
|
137
|
+
*/
|
|
138
|
+
function isValidAccountLocationStatus(value) {
|
|
139
|
+
return Object.values(AccountLocationStatus).includes(value);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1sb2NhdGlvbi1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2FjY291bnQtbG9jYXRpb24tc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQTRGSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsc0VBRUM7QUFLRCxvRUFFQztBQXhJRCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0IsNENBQW1CLENBQUE7SUFDbkIsb0RBQTJCLENBQUE7SUFDM0IsMENBQWlCLENBQUE7SUFDakIsNENBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBS2hDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLGdDQUFnQyxHQUFrRDtJQUM3RixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQy9CLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFNBQVM7YUFDbkI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsT0FBTyxFQUFFLHdCQUF3QjthQUNsQztTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLHFEQUFxRDtZQUM5RCxPQUFPLEVBQUUsMERBQTBEO1NBQ3BFO0tBQ0Y7SUFDRCxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ25DLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQzFCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsT0FBTyxFQUFFLGlCQUFpQjthQUMzQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsT0FBTyxFQUFFLGlCQUFpQjthQUMzQjtTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLGlEQUFpRDtZQUMxRCxPQUFPLEVBQUUsdURBQXVEO1NBQ2pFO0tBQ0Y7SUFDRCxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzlCLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNO1FBQ3hCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsaURBQWlEO1lBQzFELE9BQU8sRUFBRSxxREFBcUQ7U0FDL0Q7S0FDRjtJQUNELENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDL0IsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFVBQVU7YUFDcEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsT0FBTyxFQUFFLHlCQUF5QjthQUNuQztTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLDBDQUEwQztZQUNuRCxPQUFPLEVBQUUsd0RBQXdEO1NBQ2xFO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUE2QjtJQUM3RCxPQUFPLHdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxNQUE2QjtJQUN6RCxPQUFPLHdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBNkI7SUFDMUQsT0FBTyx3Q0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDeEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixNQUE2QixFQUM3QixTQUFpQixPQUFPLEVBQ3hCLFNBQTJCLE9BQU87SUFFbEMsT0FBTyx3Q0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsTUFBNkIsRUFBRSxTQUFpQixPQUFPO0lBQzFGLE9BQU8sd0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDZCQUE2QjtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxLQUFhO0lBQ3hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUE4QixDQUFDLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWNjb3VudCBMb2NhdGlvbiBTdGF0dXMgZW51bWVyYXRpb24gYW5kIG1ldGFkYXRhXG4gKiBEZWZpbmVzIGF2YWlsYWJpbGl0eSBwb2xpY2llcyBmb3IgbWVkaWNhbCBzZXJ2aWNlIGxvY2F0aW9uc1xuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhdHVzTWV0YWRhdGEsIExvY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBBY2NvdW50TG9jYXRpb25TdGF0dXMge1xuICBJTkhFUklUID0gJ2luaGVyaXQnLFxuICBBTFdBWVNfT1BFTiA9ICdhbHdheXNfb3BlbicsXG4gIENMT1NFRCA9ICdjbG9zZWQnLFxuICBQRVJJT0RTID0gJ3BlcmlvZHMnLFxufVxuXG4vKipcbiAqIEFjY291bnQgTG9jYXRpb24gU3RhdHVzIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFDQ09VTlRfTE9DQVRJT05fU1RBVFVTX01FVEFEQVRBOiBSZWNvcmQ8QWNjb3VudExvY2F0aW9uU3RhdHVzLCBTdGF0dXNNZXRhZGF0YT4gPSB7XG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuSU5IRVJJVF06IHtcbiAgICBpY29uOiAnc2V0dGluZ3NfYmFja3VwX3Jlc3RvcmUnLFxuICAgIGNvbG9yOiAnIzgwODA4MCcsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0luaGVyaXQnLFxuICAgICAgICAnZnItRlInOiAnSMOpcml0ZXInLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0luaGVyaXQgU2V0dGluZ3MnLFxuICAgICAgICAnZnItRlInOiAnSMOpcml0ZXIgZGVzIHBhcmFtw6h0cmVzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGluaGVyaXRzIGF2YWlsYWJpbGl0eSBzZXR0aW5ncyBmcm9tIHBhcmVudCcsXG4gICAgICAnZnItRlInOiAnTGUgbGlldSBow6lyaXRlIGxlcyBwYXJhbcOodHJlcyBkZSBkaXNwb25pYmlsaXTDqSBkdSBwYXJlbnQnLFxuICAgIH0sXG4gIH0sXG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuQUxXQVlTX09QRU5dOiB7XG4gICAgaWNvbjogJ3B1YmxpYycsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Fsd2F5cyBPcGVuJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1RvdWpvdXJzIG91dmVydCcsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnQWx3YXlzIE9wZW4nLFxuICAgICAgICAnZnItRlInOiAnVG91am91cnMgb3V2ZXJ0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGlzIGF2YWlsYWJsZSAyNC83IHdpdGhvdXQgcmVzdHJpY3Rpb25zJyxcbiAgICAgICdmci1GUic6ICdMZSBsaWV1IGVzdCBkaXNwb25pYmxlIDI0aC8yNCwgN2ovNyBzYW5zIHJlc3RyaWN0aW9ucycsXG4gICAgfSxcbiAgfSxcbiAgW0FjY291bnRMb2NhdGlvblN0YXR1cy5DTE9TRURdOiB7XG4gICAgaWNvbjogJ2Jsb2NrJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Nsb3NlZCcsXG4gICAgICAgICdmci1GUic6ICdGZXJtw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Nsb3NlZCcsXG4gICAgICAgICdmci1GUic6ICdGZXJtw6knLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnTG9jYXRpb24gaXMgY2xvc2VkIGFuZCB1bmF2YWlsYWJsZSBmb3Igc2VydmljZXMnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIGxpZXUgZXN0IGZlcm3DqSBldCBpbmRpc3BvbmlibGUgcG91ciBsZXMgc2VydmljZXMnLFxuICAgIH0sXG4gIH0sXG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuUEVSSU9EU106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnIzIxOTZGMycsIC8vIEJsdWVcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlcmlvZHMnLFxuICAgICAgICAnZnItRlInOiAnUMOpcmlvZGVzJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdDdXN0b20gUGVyaW9kcycsXG4gICAgICAgICdmci1GUic6ICdQw6lyaW9kZXMgcGVyc29ubmFsaXPDqWVzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGhhcyBjdXN0b20gYXZhaWxhYmlsaXR5IHBlcmlvZHMnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIGxpZXUgYSBkZXMgcMOpcmlvZGVzIGRlIGRpc3BvbmliaWxpdMOpIHBlcnNvbm5hbGlzw6llcycsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMpOiBTdGF0dXNNZXRhZGF0YSB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgaWNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzSWNvbihzdGF0dXM6IEFjY291bnRMb2NhdGlvblN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmljb247XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBjb2xvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29sb3Ioc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMpOiBzdHJpbmcge1xuICByZXR1cm4gQUNDT1VOVF9MT0NBVElPTl9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogQWNjb3VudExvY2F0aW9uU3RhdHVzLFxuICBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicsXG4gIGZvcm1hdDogJ3Nob3J0JyB8ICdsb25nJyA9ICdzaG9ydCcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gQUNDT1VOVF9MT0NBVElPTl9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5sYWJlbFtmb3JtYXRdW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRGVzY3JpcHRpb24oc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmRlc2NyaXB0aW9uW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IGFsbCBhdmFpbGFibGUgc3RhdHVzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEFjY291bnRMb2NhdGlvblN0YXR1c2VzKCk6IEFjY291bnRMb2NhdGlvblN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoQWNjb3VudExvY2F0aW9uU3RhdHVzKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgQWNjb3VudExvY2F0aW9uU3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWNjb3VudExvY2F0aW9uU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBBY2NvdW50TG9jYXRpb25TdGF0dXMge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhBY2NvdW50TG9jYXRpb25TdGF0dXMpLmluY2x1ZGVzKHZhbHVlIGFzIEFjY291bnRMb2NhdGlvblN0YXR1cyk7XG59XG4iXX0=
|
package/lib/status/index.d.ts
CHANGED
package/lib/status/index.js
CHANGED
|
@@ -10,12 +10,38 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
13
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
20
|
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
16
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MedicalHistoryStatus = exports.AccountLocationStatus = void 0;
|
|
17
40
|
/**
|
|
18
41
|
* Status module exports
|
|
19
42
|
*/
|
|
43
|
+
__exportStar(require("./types"), exports);
|
|
20
44
|
__exportStar(require("./medical-service-status"), exports);
|
|
21
|
-
|
|
45
|
+
exports.AccountLocationStatus = __importStar(require("./account-location-status"));
|
|
46
|
+
exports.MedicalHistoryStatus = __importStar(require("./medical-history-status"));
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQXdCO0FBQ3hCLDJEQUF5QztBQUN6QyxtRkFBbUU7QUFDbkUsaUZBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0dXMgbW9kdWxlIGV4cG9ydHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL21lZGljYWwtc2VydmljZS1zdGF0dXMnO1xuZXhwb3J0ICogYXMgQWNjb3VudExvY2F0aW9uU3RhdHVzIGZyb20gJy4vYWNjb3VudC1sb2NhdGlvbi1zdGF0dXMnO1xuZXhwb3J0ICogYXMgTWVkaWNhbEhpc3RvcnlTdGF0dXMgZnJvbSAnLi9tZWRpY2FsLWhpc3Rvcnktc3RhdHVzJztcbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Medical History Status enumeration and metadata
|
|
3
|
+
* Defines the status of medical history records (active or expired)
|
|
4
|
+
*/
|
|
5
|
+
import type { StatusMetadata, Locale } from './types';
|
|
6
|
+
export declare enum MedicalHistoryStatus {
|
|
7
|
+
CURRENT = "current",
|
|
8
|
+
EXPIRED = "expired"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Medical History Status metadata configuration
|
|
12
|
+
*/
|
|
13
|
+
export declare const MEDICAL_HISTORY_STATUS_METADATA: Record<MedicalHistoryStatus, StatusMetadata>;
|
|
14
|
+
/**
|
|
15
|
+
* Get status metadata
|
|
16
|
+
*/
|
|
17
|
+
export declare function getStatusMetadata(status: MedicalHistoryStatus): StatusMetadata;
|
|
18
|
+
/**
|
|
19
|
+
* Get status icon
|
|
20
|
+
*/
|
|
21
|
+
export declare function getStatusIcon(status: MedicalHistoryStatus): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get status color
|
|
24
|
+
*/
|
|
25
|
+
export declare function getStatusColor(status: MedicalHistoryStatus): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get status label (short or long)
|
|
28
|
+
*/
|
|
29
|
+
export declare function getStatusLabel(status: MedicalHistoryStatus, locale?: Locale, format?: 'short' | 'long'): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get status description
|
|
32
|
+
*/
|
|
33
|
+
export declare function getStatusDescription(status: MedicalHistoryStatus, locale?: Locale): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get all available statuses
|
|
36
|
+
*/
|
|
37
|
+
export declare function getAllMedicalHistoryStatuses(): MedicalHistoryStatus[];
|
|
38
|
+
/**
|
|
39
|
+
* Check if a value is a valid MedicalHistoryStatus
|
|
40
|
+
*/
|
|
41
|
+
export declare function isValidMedicalHistoryStatus(value: string): value is MedicalHistoryStatus;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Medical History Status enumeration and metadata
|
|
4
|
+
* Defines the status of medical history records (active or expired)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MEDICAL_HISTORY_STATUS_METADATA = exports.MedicalHistoryStatus = void 0;
|
|
8
|
+
exports.getStatusMetadata = getStatusMetadata;
|
|
9
|
+
exports.getStatusIcon = getStatusIcon;
|
|
10
|
+
exports.getStatusColor = getStatusColor;
|
|
11
|
+
exports.getStatusLabel = getStatusLabel;
|
|
12
|
+
exports.getStatusDescription = getStatusDescription;
|
|
13
|
+
exports.getAllMedicalHistoryStatuses = getAllMedicalHistoryStatuses;
|
|
14
|
+
exports.isValidMedicalHistoryStatus = isValidMedicalHistoryStatus;
|
|
15
|
+
var MedicalHistoryStatus;
|
|
16
|
+
(function (MedicalHistoryStatus) {
|
|
17
|
+
MedicalHistoryStatus["CURRENT"] = "current";
|
|
18
|
+
MedicalHistoryStatus["EXPIRED"] = "expired";
|
|
19
|
+
})(MedicalHistoryStatus || (exports.MedicalHistoryStatus = MedicalHistoryStatus = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Medical History Status metadata configuration
|
|
22
|
+
*/
|
|
23
|
+
exports.MEDICAL_HISTORY_STATUS_METADATA = {
|
|
24
|
+
[MedicalHistoryStatus.CURRENT]: {
|
|
25
|
+
icon: 'check_circle',
|
|
26
|
+
color: '#4CAF50', // Green
|
|
27
|
+
label: {
|
|
28
|
+
short: {
|
|
29
|
+
'us-EN': 'Active',
|
|
30
|
+
'fr-FR': 'Actif',
|
|
31
|
+
},
|
|
32
|
+
long: {
|
|
33
|
+
'us-EN': 'Currently Active',
|
|
34
|
+
'fr-FR': 'Actuellement actif',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
description: {
|
|
38
|
+
'us-EN': 'Medical history record is currently active and relevant',
|
|
39
|
+
'fr-FR': "L'historique mΓ©dical est actuellement actif et pertinent",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
[MedicalHistoryStatus.EXPIRED]: {
|
|
43
|
+
icon: 'do_not_disturb_on',
|
|
44
|
+
color: '#808080', // Gray
|
|
45
|
+
label: {
|
|
46
|
+
short: {
|
|
47
|
+
'us-EN': 'Expired',
|
|
48
|
+
'fr-FR': 'ExpirΓ©',
|
|
49
|
+
},
|
|
50
|
+
long: {
|
|
51
|
+
'us-EN': 'Expired Record',
|
|
52
|
+
'fr-FR': 'Enregistrement expirΓ©',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
description: {
|
|
56
|
+
'us-EN': 'Medical history record has expired and is no longer current',
|
|
57
|
+
'fr-FR': "L'historique mΓ©dical a expirΓ© et n'est plus actuel",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Get status metadata
|
|
63
|
+
*/
|
|
64
|
+
function getStatusMetadata(status) {
|
|
65
|
+
return exports.MEDICAL_HISTORY_STATUS_METADATA[status];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get status icon
|
|
69
|
+
*/
|
|
70
|
+
function getStatusIcon(status) {
|
|
71
|
+
return exports.MEDICAL_HISTORY_STATUS_METADATA[status].icon;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get status color
|
|
75
|
+
*/
|
|
76
|
+
function getStatusColor(status) {
|
|
77
|
+
return exports.MEDICAL_HISTORY_STATUS_METADATA[status].color;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get status label (short or long)
|
|
81
|
+
*/
|
|
82
|
+
function getStatusLabel(status, locale = 'us-EN', format = 'short') {
|
|
83
|
+
return exports.MEDICAL_HISTORY_STATUS_METADATA[status].label[format][locale];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get status description
|
|
87
|
+
*/
|
|
88
|
+
function getStatusDescription(status, locale = 'us-EN') {
|
|
89
|
+
return exports.MEDICAL_HISTORY_STATUS_METADATA[status].description[locale];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all available statuses
|
|
93
|
+
*/
|
|
94
|
+
function getAllMedicalHistoryStatuses() {
|
|
95
|
+
return Object.values(MedicalHistoryStatus);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if a value is a valid MedicalHistoryStatus
|
|
99
|
+
*/
|
|
100
|
+
function isValidMedicalHistoryStatus(value) {
|
|
101
|
+
return Object.values(MedicalHistoryStatus).includes(value);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1oaXN0b3J5LXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1oaXN0b3J5LXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFzREgsOENBRUM7QUFLRCxzQ0FFQztBQUtELHdDQUVDO0FBS0Qsd0NBTUM7QUFLRCxvREFFQztBQUtELG9FQUVDO0FBS0Qsa0VBRUM7QUFsR0QsSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLDJDQUFtQixDQUFBO0lBQ25CLDJDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUcvQjtBQUVEOztHQUVHO0FBQ1UsUUFBQSwrQkFBK0IsR0FBaUQ7SUFDM0YsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM5QixJQUFJLEVBQUUsY0FBYztRQUNwQixLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsT0FBTzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixPQUFPLEVBQUUsb0JBQW9CO2FBQzlCO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUseURBQXlEO1lBQ2xFLE9BQU8sRUFBRSwwREFBMEQ7U0FDcEU7S0FDRjtJQUNELENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU87UUFDekIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixPQUFPLEVBQUUsUUFBUTthQUNsQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixPQUFPLEVBQUUsdUJBQXVCO2FBQ2pDO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsNkRBQTZEO1lBQ3RFLE9BQU8sRUFBRSxvREFBb0Q7U0FDOUQ7S0FDRjtDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE1BQTRCO0lBQzVELE9BQU8sdUNBQStCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE1BQTRCO0lBQ3hELE9BQU8sdUNBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUE0QjtJQUN6RCxPQUFPLHVDQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLE1BQTRCLEVBQzVCLFNBQWlCLE9BQU8sRUFDeEIsU0FBMkIsT0FBTztJQUVsQyxPQUFPLHVDQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxNQUE0QixFQUFFLFNBQWlCLE9BQU87SUFDekYsT0FBTyx1Q0FBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsNEJBQTRCO0lBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEtBQWE7SUFDdkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQTZCLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZWRpY2FsIEhpc3RvcnkgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICogRGVmaW5lcyB0aGUgc3RhdHVzIG9mIG1lZGljYWwgaGlzdG9yeSByZWNvcmRzIChhY3RpdmUgb3IgZXhwaXJlZClcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YXR1c01ldGFkYXRhLCBMb2NhbGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGVudW0gTWVkaWNhbEhpc3RvcnlTdGF0dXMge1xuICBDVVJSRU5UID0gJ2N1cnJlbnQnLFxuICBFWFBJUkVEID0gJ2V4cGlyZWQnLFxufVxuXG4vKipcbiAqIE1lZGljYWwgSGlzdG9yeSBTdGF0dXMgbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQTogUmVjb3JkPE1lZGljYWxIaXN0b3J5U3RhdHVzLCBTdGF0dXNNZXRhZGF0YT4gPSB7XG4gIFtNZWRpY2FsSGlzdG9yeVN0YXR1cy5DVVJSRU5UXToge1xuICAgIGljb246ICdjaGVja19jaXJjbGUnLFxuICAgIGNvbG9yOiAnIzRDQUY1MCcsIC8vIEdyZWVuXG4gICAgbGFiZWw6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgICd1cy1FTic6ICdBY3RpdmUnLFxuICAgICAgICAnZnItRlInOiAnQWN0aWYnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0N1cnJlbnRseSBBY3RpdmUnLFxuICAgICAgICAnZnItRlInOiAnQWN0dWVsbGVtZW50IGFjdGlmJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ01lZGljYWwgaGlzdG9yeSByZWNvcmQgaXMgY3VycmVudGx5IGFjdGl2ZSBhbmQgcmVsZXZhbnQnLFxuICAgICAgJ2ZyLUZSJzogXCJMJ2hpc3RvcmlxdWUgbcOpZGljYWwgZXN0IGFjdHVlbGxlbWVudCBhY3RpZiBldCBwZXJ0aW5lbnRcIixcbiAgICB9LFxuICB9LFxuICBbTWVkaWNhbEhpc3RvcnlTdGF0dXMuRVhQSVJFRF06IHtcbiAgICBpY29uOiAnZG9fbm90X2Rpc3R1cmJfb24nLFxuICAgIGNvbG9yOiAnIzgwODA4MCcsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0V4cGlyZWQnLFxuICAgICAgICAnZnItRlInOiAnRXhwaXLDqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnRXhwaXJlZCBSZWNvcmQnLFxuICAgICAgICAnZnItRlInOiAnRW5yZWdpc3RyZW1lbnQgZXhwaXLDqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdNZWRpY2FsIGhpc3RvcnkgcmVjb3JkIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgY3VycmVudCcsXG4gICAgICAnZnItRlInOiBcIkwnaGlzdG9yaXF1ZSBtw6lkaWNhbCBhIGV4cGlyw6kgZXQgbidlc3QgcGx1cyBhY3R1ZWxcIixcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBHZXQgc3RhdHVzIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNNZXRhZGF0YShzdGF0dXM6IE1lZGljYWxIaXN0b3J5U3RhdHVzKTogU3RhdHVzTWV0YWRhdGEge1xuICByZXR1cm4gTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgaWNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzSWNvbihzdGF0dXM6IE1lZGljYWxIaXN0b3J5U3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5pY29uO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgY29sb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKHN0YXR1czogTWVkaWNhbEhpc3RvcnlTdGF0dXMpOiBzdHJpbmcge1xuICByZXR1cm4gTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmNvbG9yO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgbGFiZWwgKHNob3J0IG9yIGxvbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNMYWJlbChcbiAgc3RhdHVzOiBNZWRpY2FsSGlzdG9yeVN0YXR1cyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nLFxuICBmb3JtYXQ6ICdzaG9ydCcgfCAnbG9uZycgPSAnc2hvcnQnLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5sYWJlbFtmb3JtYXRdW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRGVzY3JpcHRpb24oc3RhdHVzOiBNZWRpY2FsSGlzdG9yeVN0YXR1cywgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5kZXNjcmlwdGlvbltsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBhbGwgYXZhaWxhYmxlIHN0YXR1c2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxNZWRpY2FsSGlzdG9yeVN0YXR1c2VzKCk6IE1lZGljYWxIaXN0b3J5U3RhdHVzW10ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWRpY2FsSGlzdG9yeVN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIE1lZGljYWxIaXN0b3J5U3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVkaWNhbEhpc3RvcnlTdGF0dXModmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIE1lZGljYWxIaXN0b3J5U3RhdHVzIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbEhpc3RvcnlTdGF0dXMpLmluY2x1ZGVzKHZhbHVlIGFzIE1lZGljYWxIaXN0b3J5U3RhdHVzKTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Medical Service Status enumeration and metadata
|
|
3
3
|
*/
|
|
4
|
-
import type { Locale } from '
|
|
4
|
+
import type { StatusMetadata, Locale } from './types';
|
|
5
5
|
export declare enum MedicalServiceStatus {
|
|
6
6
|
PENDING = "pending",
|
|
7
7
|
IN_PROGRESS = "in_progress",
|
|
@@ -9,27 +9,6 @@ export declare enum MedicalServiceStatus {
|
|
|
9
9
|
CANCELED = "canceled",
|
|
10
10
|
COMPLETED = "completed"
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Status metadata including icons, colors, and translations
|
|
14
|
-
*/
|
|
15
|
-
export interface StatusMetadata {
|
|
16
|
-
icon: string;
|
|
17
|
-
color: string;
|
|
18
|
-
label: {
|
|
19
|
-
short: {
|
|
20
|
-
'us-EN': string;
|
|
21
|
-
'fr-FR': string;
|
|
22
|
-
};
|
|
23
|
-
long: {
|
|
24
|
-
'us-EN': string;
|
|
25
|
-
'fr-FR': string;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
description: {
|
|
29
|
-
'us-EN': string;
|
|
30
|
-
'fr-FR': string;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
12
|
/**
|
|
34
13
|
* Medical Service Status metadata configuration
|
|
35
14
|
*/
|
|
@@ -44,7 +44,7 @@ exports.MEDICAL_SERVICE_STATUS_METADATA = {
|
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
[MedicalServiceStatus.ON_WAITING_ROOM]: {
|
|
47
|
-
icon: '
|
|
47
|
+
icon: 'event_busy',
|
|
48
48
|
color: '#FF9800', // Orange
|
|
49
49
|
label: {
|
|
50
50
|
short: {
|
|
@@ -188,4 +188,4 @@ function isValidTransition(from, to) {
|
|
|
188
188
|
function getAllowedTransitions(status) {
|
|
189
189
|
return exports.MEDICAL_SERVICE_STATUS_TRANSITIONS[status] ?? [];
|
|
190
190
|
}
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQXFJSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsb0VBRUM7QUFLRCxrRUFFQztBQXdCRCw4Q0FFQztBQUtELHNEQUVDO0FBbE5ELElBQVksb0JBTVg7QUFORCxXQUFZLG9CQUFvQjtJQUM5QiwyQ0FBbUIsQ0FBQTtJQUNuQixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQyw2Q0FBcUIsQ0FBQTtJQUNyQiwrQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsb0JBQW9CLG9DQUFwQixvQkFBb0IsUUFNL0I7QUF3QkQ7O0dBRUc7QUFDVSxRQUFBLCtCQUErQixHQUFpRDtJQUMzRixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztRQUN6QixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLE9BQU8sRUFBRSxvQkFBb0I7YUFDOUI7U0FDRjtRQUNELFdBQVcsRUFBRTtZQUNYLE9BQU8sRUFBRSx1REFBdUQ7WUFDaEUsT0FBTyxFQUFFLDREQUE0RDtTQUN0RTtLQUNGO0lBQ0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUztRQUMzQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JB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ZWRpY2FsIFNlcnZpY2UgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICovXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vb3BlcmF0aW9ucy9sYWJlbHMnO1xuXG5leHBvcnQgZW51bSBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIElOX1BST0dSRVNTID0gJ2luX3Byb2dyZXNzJyxcbiAgT05fV0FJVElOR19ST09NID0gJ29uX3dhaXRpbmdfcm9vbScsXG4gIENBTkNFTEVEID0gJ2NhbmNlbGVkJyxcbiAgQ09NUExFVEVEID0gJ2NvbXBsZXRlZCcsXG59XG5cbi8qKlxuICogU3RhdHVzIG1ldGFkYXRhIGluY2x1ZGluZyBpY29ucywgY29sb3JzLCBhbmQgdHJhbnNsYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdHVzTWV0YWRhdGEge1xuICBpY29uOiBzdHJpbmc7IC8vIE1hdGVyaWFsIGljb24gbmFtZVxuICBjb2xvcjogc3RyaW5nOyAvLyBIZXggY29sb3Igb3IgQ1NTIGNvbG9yIG5hbWVcbiAgbGFiZWw6IHtcbiAgICBzaG9ydDoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gICAgbG9uZzoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGRlc2NyaXB0aW9uOiB7XG4gICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICdmci1GUic6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBNZWRpY2FsIFNlcnZpY2UgU3RhdHVzIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEE6IFJlY29yZDxNZWRpY2FsU2VydmljZVN0YXR1cywgU3RhdHVzTWV0YWRhdGE+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnIzlFOUU5RScsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlbmRpbmcnLFxuICAgICAgICAnZnItRlInOiAnRW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnUGVuZGluZyBTZXJ2aWNlJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1NlcnZpY2UgZW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGlzIHNjaGVkdWxlZCBhbmQgd2FpdGluZyB0byBiZWdpbicsXG4gICAgICAnZnItRlInOiAnTGUgc2VydmljZSBtw6lkaWNhbCBlc3QgcGxhbmlmacOpIGV0IGVuIGF0dGVudGUgZGUgZMOpbWFycmFnZScsXG4gICAgfSxcbiAgfSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLk9OX1dBSVRJTkdfUk9PTV06IHtcbiAgICBpY29uOiAncGVyc29uX3Bpbl9jaXJjbGUnLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnV2FpdGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdJbiBXYWl0aW5nIFJvb20nLFxuICAgICAgICAnZnItRlInOiBcIkRhbnMgbGEgc2FsbGUgZCdhdHRlbnRlXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdQYXRpZW50IGhhcyBjaGVja2VkIGluIGFuZCBpcyB3YWl0aW5nIGluIHRoZSB3YWl0aW5nIHJvb20nLFxuICAgICAgJ2ZyLUZSJzogXCJMZSBwYXRpZW50IHMnZXN0IGVucmVnaXN0csOpIGV0IGF0dGVuZCBkYW5zIGxhIHNhbGxlIGQnYXR0ZW50ZVwiLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5JTl9QUk9HUkVTU106IHtcbiAgICBpY29uOiAnbWVkaWNhbF9zZXJ2aWNlcycsXG4gICAgY29sb3I6ICcjMjE5NkYzJywgLy8gQmx1ZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnRW4gY291cnMnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBlbiBjb3VycycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGNvbnN1bHRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MnLFxuICAgICAgJ2ZyLUZSJzogJ0xhIGNvbnN1bHRhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsIGVzdCBhY3R1ZWxsZW1lbnQgZW4gY291cnMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DT01QTEVURURdOiB7XG4gICAgaWNvbjogJ2NoZWNrX2NpcmNsZScsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NvbXBsZXRlZCcsXG4gICAgICAgICdmci1GUic6ICdUZXJtaW7DqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnU2VydmljZSBDb21wbGV0ZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSB0ZXJtaW7DqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSB0ZXJtaW7DqSBhdmVjIHN1Y2PDqHMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IHtcbiAgICBpY29uOiAnY2FuY2VsJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NhbmNlbGVkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FubnVsw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgQ2FuY2VsZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBhbm51bMOpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZWRpY2FsIHNlcnZpY2UgaGFzIGJlZW4gY2FuY2VsZWQgYW5kIHdpbGwgbm90IHByb2NlZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSBhbm51bMOpIGV0IG5lIHNlcmEgcGFzIGVmZmVjdHXDqScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGljb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb24oc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10ubGFiZWxbZm9ybWF0XVtsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uKHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTWVkaWNhbFNlcnZpY2VTdGF0dXNlcygpOiBNZWRpY2FsU2VydmljZVN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbFNlcnZpY2VTdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBNZWRpY2FsU2VydmljZVN0YXR1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lZGljYWxTZXJ2aWNlU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKE1lZGljYWxTZXJ2aWNlU3RhdHVzKS5pbmNsdWRlcyh2YWx1ZSBhcyBNZWRpY2FsU2VydmljZVN0YXR1cyk7XG59XG5cbi8qKlxuICogU3RhdHVzIHRyYW5zaXRpb24gcnVsZXMgKG9wdGlvbmFsOiBkZWZpbmUgd2hpY2ggdHJhbnNpdGlvbnMgYXJlIGFsbG93ZWQpXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIE1lZGljYWxTZXJ2aWNlU3RhdHVzW10+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IFtcbiAgICBNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT00sXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gIF0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiBbXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElORyxcbiAgXSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLkNPTVBMRVRFRCwgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRURdLFxuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ09NUExFVEVEXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXSwgLy8gQWxsb3cgcmVvcGVuaW5nXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IFtNZWRpY2FsU2VydmljZVN0YXR1cy5QRU5ESU5HXSwgLy8gQWxsb3cgdW5jYW5jZWxpbmdcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0dXMgdHJhbnNpdGlvbiBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zaXRpb24oZnJvbTogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIHRvOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gTUVESUNBTF9TRVJWSUNFX1NUQVRVU19UUkFOU0lUSU9OU1tmcm9tXT8uaW5jbHVkZXModG8pID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGxvd2VkIHRyYW5zaXRpb25zIGZyb20gYSBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbG93ZWRUcmFuc2l0aW9ucyhzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogTWVkaWNhbFNlcnZpY2VTdGF0dXNbXSB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TW3N0YXR1c10gPz8gW107XG59XG4iXX0=
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQStHSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsb0VBRUM7QUFLRCxrRUFFQztBQXdCRCw4Q0FFQztBQUtELHNEQUVDO0FBNUxELElBQVksb0JBTVg7QUFORCxXQUFZLG9CQUFvQjtJQUM5QiwyQ0FBbUIsQ0FBQTtJQUNuQixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQyw2Q0FBcUIsQ0FBQTtJQUNyQiwrQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsb0JBQW9CLG9DQUFwQixvQkFBb0IsUUFNL0I7QUFFRDs7R0FFRztBQUNVLFFBQUEsK0JBQStCLEdBQWlEO0lBQzNGLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFlBQVk7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsT0FBTyxFQUFFLG9CQUFvQjthQUM5QjtTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLHVEQUF1RDtZQUNoRSxPQUFPLEVBQUUsNERBQTREO1NBQ3RFO0tBQ0Y7SUFDRCxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ3RDLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUztRQUMzQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JBQ0ws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Y2FsIFNlcnZpY2UgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhdHVzTWV0YWRhdGEsIExvY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIElOX1BST0dSRVNTID0gJ2luX3Byb2dyZXNzJyxcbiAgT05fV0FJVElOR19ST09NID0gJ29uX3dhaXRpbmdfcm9vbScsXG4gIENBTkNFTEVEID0gJ2NhbmNlbGVkJyxcbiAgQ09NUExFVEVEID0gJ2NvbXBsZXRlZCcsXG59XG5cbi8qKlxuICogTWVkaWNhbCBTZXJ2aWNlIFN0YXR1cyBtZXRhZGF0YSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIFN0YXR1c01ldGFkYXRhPiA9IHtcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLlBFTkRJTkddOiB7XG4gICAgaWNvbjogJ3NjaGVkdWxlJyxcbiAgICBjb2xvcjogJyM5RTlFOUUnLCAvLyBHcmF5XG4gICAgbGFiZWw6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgICd1cy1FTic6ICdQZW5kaW5nJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0VuIGF0dGVudGUnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlbmRpbmcgU2VydmljZScsXG4gICAgICAgICdmci1GUic6ICdTZXJ2aWNlIGVuIGF0dGVudGUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnVGhlIG1lZGljYWwgc2VydmljZSBpcyBzY2hlZHVsZWQgYW5kIHdhaXRpbmcgdG8gYmVnaW4nLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgZXN0IHBsYW5pZmnDqSBldCBlbiBhdHRlbnRlIGRlIGTDqW1hcnJhZ2UnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiB7XG4gICAgaWNvbjogJ2V2ZW50X2J1c3knLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnV2FpdGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdJbiBXYWl0aW5nIFJvb20nLFxuICAgICAgICAnZnItRlInOiBcIkRhbnMgbGEgc2FsbGUgZCdhdHRlbnRlXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdQYXRpZW50IGhhcyBjaGVja2VkIGluIGFuZCBpcyB3YWl0aW5nIGluIHRoZSB3YWl0aW5nIHJvb20nLFxuICAgICAgJ2ZyLUZSJzogXCJMZSBwYXRpZW50IHMnZXN0IGVucmVnaXN0csOpIGV0IGF0dGVuZCBkYW5zIGxhIHNhbGxlIGQnYXR0ZW50ZVwiLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5JTl9QUk9HUkVTU106IHtcbiAgICBpY29uOiAnbWVkaWNhbF9zZXJ2aWNlcycsXG4gICAgY29sb3I6ICcjMjE5NkYzJywgLy8gQmx1ZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnRW4gY291cnMnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBlbiBjb3VycycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGNvbnN1bHRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MnLFxuICAgICAgJ2ZyLUZSJzogJ0xhIGNvbnN1bHRhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsIGVzdCBhY3R1ZWxsZW1lbnQgZW4gY291cnMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DT01QTEVURURdOiB7XG4gICAgaWNvbjogJ2NoZWNrX2NpcmNsZScsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NvbXBsZXRlZCcsXG4gICAgICAgICdmci1GUic6ICdUZXJtaW7DqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnU2VydmljZSBDb21wbGV0ZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSB0ZXJtaW7DqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSB0ZXJtaW7DqSBhdmVjIHN1Y2PDqHMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IHtcbiAgICBpY29uOiAnY2FuY2VsJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NhbmNlbGVkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FubnVsw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgQ2FuY2VsZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBhbm51bMOpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZWRpY2FsIHNlcnZpY2UgaGFzIGJlZW4gY2FuY2VsZWQgYW5kIHdpbGwgbm90IHByb2NlZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSBhbm51bMOpIGV0IG5lIHNlcmEgcGFzIGVmZmVjdHXDqScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGljb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb24oc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10ubGFiZWxbZm9ybWF0XVtsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uKHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTWVkaWNhbFNlcnZpY2VTdGF0dXNlcygpOiBNZWRpY2FsU2VydmljZVN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbFNlcnZpY2VTdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBNZWRpY2FsU2VydmljZVN0YXR1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lZGljYWxTZXJ2aWNlU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKE1lZGljYWxTZXJ2aWNlU3RhdHVzKS5pbmNsdWRlcyh2YWx1ZSBhcyBNZWRpY2FsU2VydmljZVN0YXR1cyk7XG59XG5cbi8qKlxuICogU3RhdHVzIHRyYW5zaXRpb24gcnVsZXMgKG9wdGlvbmFsOiBkZWZpbmUgd2hpY2ggdHJhbnNpdGlvbnMgYXJlIGFsbG93ZWQpXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIE1lZGljYWxTZXJ2aWNlU3RhdHVzW10+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IFtcbiAgICBNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT00sXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gIF0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiBbXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElORyxcbiAgXSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLkNPTVBMRVRFRCwgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRURdLFxuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ09NUExFVEVEXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXSwgLy8gQWxsb3cgcmVvcGVuaW5nXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IFtNZWRpY2FsU2VydmljZVN0YXR1cy5QRU5ESU5HXSwgLy8gQWxsb3cgdW5jYW5jZWxpbmdcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0dXMgdHJhbnNpdGlvbiBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zaXRpb24oZnJvbTogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIHRvOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gTUVESUNBTF9TRVJWSUNFX1NUQVRVU19UUkFOU0lUSU9OU1tmcm9tXT8uaW5jbHVkZXModG8pID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGxvd2VkIHRyYW5zaXRpb25zIGZyb20gYSBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbG93ZWRUcmFuc2l0aW9ucyhzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogTWVkaWNhbFNlcnZpY2VTdGF0dXNbXSB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TW3N0YXR1c10gPz8gW107XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared status types for all status modules
|
|
3
|
+
* Provides common interfaces and types used across status definitions
|
|
4
|
+
*/
|
|
5
|
+
import type { Locale } from '../operations/labels';
|
|
6
|
+
/**
|
|
7
|
+
* Status metadata interface
|
|
8
|
+
* Defines the structure for all status metadata including icons, colors, and translations
|
|
9
|
+
*/
|
|
10
|
+
export interface StatusMetadata {
|
|
11
|
+
icon: string;
|
|
12
|
+
color: string;
|
|
13
|
+
label: {
|
|
14
|
+
short: {
|
|
15
|
+
'us-EN': string;
|
|
16
|
+
'fr-FR': string;
|
|
17
|
+
};
|
|
18
|
+
long: {
|
|
19
|
+
'us-EN': string;
|
|
20
|
+
'fr-FR': string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
description: {
|
|
24
|
+
'us-EN': string;
|
|
25
|
+
'fr-FR': string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generic status configuration type
|
|
30
|
+
* Used to define metadata for any enum-based status
|
|
31
|
+
*/
|
|
32
|
+
export type StatusConfiguration<T extends string | number> = Record<T, StatusMetadata>;
|
|
33
|
+
/**
|
|
34
|
+
* Utility type for locale parameter
|
|
35
|
+
*/
|
|
36
|
+
export type { Locale };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared status types for all status modules
|
|
4
|
+
* Provides common interfaces and types used across status definitions
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCBzdGF0dXMgdHlwZXMgZm9yIGFsbCBzdGF0dXMgbW9kdWxlc1xuICogUHJvdmlkZXMgY29tbW9uIGludGVyZmFjZXMgYW5kIHR5cGVzIHVzZWQgYWNyb3NzIHN0YXR1cyBkZWZpbml0aW9uc1xuICovXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vb3BlcmF0aW9ucy9sYWJlbHMnO1xuXG4vKipcbiAqIFN0YXR1cyBtZXRhZGF0YSBpbnRlcmZhY2VcbiAqIERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgYWxsIHN0YXR1cyBtZXRhZGF0YSBpbmNsdWRpbmcgaWNvbnMsIGNvbG9ycywgYW5kIHRyYW5zbGF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c01ldGFkYXRhIHtcbiAgaWNvbjogc3RyaW5nOyAvLyBNYXRlcmlhbCBpY29uIG5hbWVcbiAgY29sb3I6IHN0cmluZzsgLy8gSGV4IGNvbG9yIG9yIENTUyBjb2xvciBuYW1lXG4gIGxhYmVsOiB7XG4gICAgc2hvcnQ6IHtcbiAgICAgICd1cy1FTic6IHN0cmluZztcbiAgICAgICdmci1GUic6IHN0cmluZztcbiAgICB9O1xuICAgIGxvbmc6IHtcbiAgICAgICd1cy1FTic6IHN0cmluZztcbiAgICAgICdmci1GUic6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBkZXNjcmlwdGlvbjoge1xuICAgICd1cy1FTic6IHN0cmluZztcbiAgICAnZnItRlInOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogR2VuZXJpYyBzdGF0dXMgY29uZmlndXJhdGlvbiB0eXBlXG4gKiBVc2VkIHRvIGRlZmluZSBtZXRhZGF0YSBmb3IgYW55IGVudW0tYmFzZWQgc3RhdHVzXG4gKi9cbmV4cG9ydCB0eXBlIFN0YXR1c0NvbmZpZ3VyYXRpb248VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4gPSBSZWNvcmQ8VCwgU3RhdHVzTWV0YWRhdGE+O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSBmb3IgbG9jYWxlIHBhcmFtZXRlclxuICovXG5leHBvcnQgdHlwZSB7IExvY2FsZSB9O1xuIl19
|