@doctorus/common 0.0.9 → 0.0.11
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.
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { Resource, MEDICAL_RESOURCES, PUBLIC_RESOURCES, isMedicalResource, isPublicResource } from './resources';
|
|
2
2
|
export { Action } from './actions';
|
|
3
3
|
export { Operation, OPERATION, getResourceFromOperation, getActionFromOperation } from './operation';
|
|
4
|
+
export * from './labels';
|
|
4
5
|
export { Operations, getAllOperations, getOperationsByResource, getOperationsByAction } from './predefined';
|
package/lib/operations/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.getOperationsByAction = exports.getOperationsByResource = exports.getAllOperations = exports.Operations = exports.getActionFromOperation = exports.getResourceFromOperation = exports.Operation = exports.Action = exports.isPublicResource = exports.isMedicalResource = exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.Resource = void 0;
|
|
4
18
|
var resources_1 = require("./resources");
|
|
@@ -13,9 +27,10 @@ var operation_1 = require("./operation");
|
|
|
13
27
|
Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return operation_1.Operation; } });
|
|
14
28
|
Object.defineProperty(exports, "getResourceFromOperation", { enumerable: true, get: function () { return operation_1.getResourceFromOperation; } });
|
|
15
29
|
Object.defineProperty(exports, "getActionFromOperation", { enumerable: true, get: function () { return operation_1.getActionFromOperation; } });
|
|
30
|
+
__exportStar(require("./labels"), exports);
|
|
16
31
|
var predefined_1 = require("./predefined");
|
|
17
32
|
Object.defineProperty(exports, "Operations", { enumerable: true, get: function () { return predefined_1.Operations; } });
|
|
18
33
|
Object.defineProperty(exports, "getAllOperations", { enumerable: true, get: function () { return predefined_1.getAllOperations; } });
|
|
19
34
|
Object.defineProperty(exports, "getOperationsByResource", { enumerable: true, get: function () { return predefined_1.getOperationsByResource; } });
|
|
20
35
|
Object.defineProperty(exports, "getOperationsByAction", { enumerable: true, get: function () { return predefined_1.getOperationsByAction; } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFpSDtBQUF4RyxxR0FBQSxRQUFRLE9BQUE7QUFBRSw4R0FBQSxpQkFBaUIsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBQUUsOEdBQUEsaUJBQWlCLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUMzRixxQ0FBbUM7QUFBMUIsaUdBQUEsTUFBTSxPQUFBO0FBQ2YseUNBQXFHO0FBQTVGLHNHQUFBLFNBQVMsT0FBQTtBQUFhLHFIQUFBLHdCQUF3QixPQUFBO0FBQUUsbUhBQUEsc0JBQXNCLE9BQUE7QUFDL0UsMkNBQXlCO0FBQ3pCLDJDQUE0RztBQUFuRyx3R0FBQSxVQUFVLE9BQUE7QUFBRSw4R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLHFIQUFBLHVCQUF1QixPQUFBO0FBQUUsbUhBQUEscUJBQXFCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZXNvdXJjZSwgTUVESUNBTF9SRVNPVVJDRVMsIFBVQkxJQ19SRVNPVVJDRVMsIGlzTWVkaWNhbFJlc291cmNlLCBpc1B1YmxpY1Jlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZXMnO1xuZXhwb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zJztcbmV4cG9ydCB7IE9wZXJhdGlvbiwgT1BFUkFUSU9OLCBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24sIGdldEFjdGlvbkZyb21PcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xhYmVscyc7XG5leHBvcnQgeyBPcGVyYXRpb25zLCBnZXRBbGxPcGVyYXRpb25zLCBnZXRPcGVyYXRpb25zQnlSZXNvdXJjZSwgZ2V0T3BlcmF0aW9uc0J5QWN0aW9uIH0gZnJvbSAnLi9wcmVkZWZpbmVkJztcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Action } from './actions';
|
|
2
|
+
import { Operation } from './operation';
|
|
3
|
+
import { Resource } from './resources';
|
|
4
|
+
export type Locale = 'fr-FR' | 'us-EN';
|
|
5
|
+
export declare function getActionLabel(action: Action, locale?: Locale): string;
|
|
6
|
+
export declare function getResourceLabel(resource: Resource, locale?: Locale): string;
|
|
7
|
+
export declare function getOperationLabel(operation: Operation | string, locale?: Locale, opts?: {
|
|
8
|
+
order?: 'action-resource' | 'resource-action';
|
|
9
|
+
separator?: string;
|
|
10
|
+
}): string;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getActionLabel = getActionLabel;
|
|
4
|
+
exports.getResourceLabel = getResourceLabel;
|
|
5
|
+
exports.getOperationLabel = getOperationLabel;
|
|
6
|
+
const actions_1 = require("./actions");
|
|
7
|
+
const operation_1 = require("./operation");
|
|
8
|
+
const resources_1 = require("./resources");
|
|
9
|
+
const enAction = {
|
|
10
|
+
[actions_1.Action.CREATE]: 'Create',
|
|
11
|
+
[actions_1.Action.READ]: 'Read',
|
|
12
|
+
[actions_1.Action.UPDATE]: 'Update',
|
|
13
|
+
[actions_1.Action.DELETE]: 'Delete',
|
|
14
|
+
[actions_1.Action.PUT]: 'Put',
|
|
15
|
+
[actions_1.Action.LIST]: 'List',
|
|
16
|
+
[actions_1.Action.MANAGE]: 'Manage',
|
|
17
|
+
[actions_1.Action.VIEW]: 'View',
|
|
18
|
+
[actions_1.Action.SEARCH]: 'Search',
|
|
19
|
+
[actions_1.Action.GRANT]: 'Grant',
|
|
20
|
+
[actions_1.Action.REVOKE]: 'Revoke',
|
|
21
|
+
[actions_1.Action.PRESCRIBE]: 'Prescribe',
|
|
22
|
+
[actions_1.Action.DIAGNOSE]: 'Diagnose',
|
|
23
|
+
[actions_1.Action.SCHEDULE]: 'Schedule',
|
|
24
|
+
[actions_1.Action.CANCEL]: 'Cancel',
|
|
25
|
+
[actions_1.Action.APPROVE]: 'Approve',
|
|
26
|
+
[actions_1.Action.REJECT]: 'Reject',
|
|
27
|
+
[actions_1.Action.SIGN]: 'Sign',
|
|
28
|
+
[actions_1.Action.VERIFY]: 'Verify',
|
|
29
|
+
[actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Set medical service status',
|
|
30
|
+
[actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Set medical service fees',
|
|
31
|
+
[actions_1.Action.UPDATE_STATUS]: 'Update status',
|
|
32
|
+
[actions_1.Action.VIEW_PATIENTS]: 'View patients',
|
|
33
|
+
[actions_1.Action.PUT_PATIENT_PAYMENT]: 'Put patient payment',
|
|
34
|
+
[actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Delete patient payment',
|
|
35
|
+
[actions_1.Action.EXPORT]: 'Export',
|
|
36
|
+
[actions_1.Action.IMPORT]: 'Import',
|
|
37
|
+
[actions_1.Action.ARCHIVE]: 'Archive',
|
|
38
|
+
[actions_1.Action.RESTORE]: 'Restore',
|
|
39
|
+
[actions_1.Action.SHARE]: 'Share',
|
|
40
|
+
[actions_1.Action.DOWNLOAD]: 'Download',
|
|
41
|
+
[actions_1.Action.UPLOAD]: 'Upload',
|
|
42
|
+
[actions_1.Action.LOGIN]: 'Login',
|
|
43
|
+
[actions_1.Action.LOGOUT]: 'Logout',
|
|
44
|
+
[actions_1.Action.CONFIGURE]: 'Configure',
|
|
45
|
+
[actions_1.Action.AUDIT]: 'Audit',
|
|
46
|
+
};
|
|
47
|
+
const frAction = {
|
|
48
|
+
[actions_1.Action.CREATE]: 'Créer',
|
|
49
|
+
[actions_1.Action.READ]: 'Lire',
|
|
50
|
+
[actions_1.Action.UPDATE]: 'Mettre à jour',
|
|
51
|
+
[actions_1.Action.DELETE]: 'Supprimer',
|
|
52
|
+
[actions_1.Action.PUT]: 'Mettre',
|
|
53
|
+
[actions_1.Action.LIST]: 'Lister',
|
|
54
|
+
[actions_1.Action.MANAGE]: 'Gérer',
|
|
55
|
+
[actions_1.Action.VIEW]: 'Voir',
|
|
56
|
+
[actions_1.Action.SEARCH]: 'Rechercher',
|
|
57
|
+
[actions_1.Action.GRANT]: 'Accorder',
|
|
58
|
+
[actions_1.Action.REVOKE]: 'Révoquer',
|
|
59
|
+
[actions_1.Action.PRESCRIBE]: 'Prescrire',
|
|
60
|
+
[actions_1.Action.DIAGNOSE]: 'Diagnostiquer',
|
|
61
|
+
[actions_1.Action.SCHEDULE]: 'Planifier',
|
|
62
|
+
[actions_1.Action.CANCEL]: 'Annuler',
|
|
63
|
+
[actions_1.Action.APPROVE]: 'Approuver',
|
|
64
|
+
[actions_1.Action.REJECT]: 'Rejeter',
|
|
65
|
+
[actions_1.Action.SIGN]: 'Signer',
|
|
66
|
+
[actions_1.Action.VERIFY]: 'Vérifier',
|
|
67
|
+
[actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Définir le statut du service médical',
|
|
68
|
+
[actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Définir les frais du service médical',
|
|
69
|
+
[actions_1.Action.UPDATE_STATUS]: 'Mettre à jour le statut',
|
|
70
|
+
[actions_1.Action.VIEW_PATIENTS]: 'Voir les patients',
|
|
71
|
+
[actions_1.Action.PUT_PATIENT_PAYMENT]: 'Enregistrer le paiement patient',
|
|
72
|
+
[actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Supprimer le paiement patient',
|
|
73
|
+
[actions_1.Action.EXPORT]: 'Exporter',
|
|
74
|
+
[actions_1.Action.IMPORT]: 'Importer',
|
|
75
|
+
[actions_1.Action.ARCHIVE]: 'Archiver',
|
|
76
|
+
[actions_1.Action.RESTORE]: 'Restaurer',
|
|
77
|
+
[actions_1.Action.SHARE]: 'Partager',
|
|
78
|
+
[actions_1.Action.DOWNLOAD]: 'Télécharger',
|
|
79
|
+
[actions_1.Action.UPLOAD]: 'Téléverser',
|
|
80
|
+
[actions_1.Action.LOGIN]: 'Connexion',
|
|
81
|
+
[actions_1.Action.LOGOUT]: 'Déconnexion',
|
|
82
|
+
[actions_1.Action.CONFIGURE]: 'Configurer',
|
|
83
|
+
[actions_1.Action.AUDIT]: 'Auditer',
|
|
84
|
+
};
|
|
85
|
+
// For resources we provide a few explicit French overrides and default to humanized names
|
|
86
|
+
const frResourceOverrides = {
|
|
87
|
+
[resources_1.Resource.ACCOUNT]: 'Compte',
|
|
88
|
+
[resources_1.Resource.ACCOUNT_OWNERSHIP]: 'Propriété du compte',
|
|
89
|
+
[resources_1.Resource.ACCOUNT_PREFERENCES]: 'Préférences du compte',
|
|
90
|
+
[resources_1.Resource.USER]: 'Utilisateur',
|
|
91
|
+
[resources_1.Resource.CONTACT]: 'Contact',
|
|
92
|
+
[resources_1.Resource.PATIENT]: 'Patient',
|
|
93
|
+
[resources_1.Resource.PATIENT_MEDICAL_NOTES]: 'Notes médicales du patient',
|
|
94
|
+
[resources_1.Resource.PATIENT_MEDICAL_PROPERTIES]: 'Propriétés médicales du patient',
|
|
95
|
+
[resources_1.Resource.PATIENT_PUBLIC_PROPERTIES]: 'Propriétés publiques du patient',
|
|
96
|
+
[resources_1.Resource.PATIENT_PAYMENT]: 'Paiement du patient',
|
|
97
|
+
[resources_1.Resource.MEDICAL_SERVICE]: 'Service médical',
|
|
98
|
+
[resources_1.Resource.MEDICAL_SERVICE_NOTE]: 'Note du service médical',
|
|
99
|
+
[resources_1.Resource.MEDICAL_SERVICE_SCHEDULE]: 'Planification du service médical',
|
|
100
|
+
[resources_1.Resource.MEDICAL_SERVICE_FEES]: 'Frais du service médical',
|
|
101
|
+
[resources_1.Resource.MEDICAL_SERVICE_STATUS]: 'Statut du service médical',
|
|
102
|
+
[resources_1.Resource.MEDICAL_NOTE]: 'Note médicale',
|
|
103
|
+
[resources_1.Resource.MEDICAL_RECORD]: 'Dossier médical',
|
|
104
|
+
[resources_1.Resource.MEDICAL_HISTORY]: 'Antécédents médicaux',
|
|
105
|
+
[resources_1.Resource.MEDICAL_HISTORY_MODEL]: "Modèle d'antécédents médicaux",
|
|
106
|
+
[resources_1.Resource.PRESCRIPTION]: 'Ordonnance',
|
|
107
|
+
[resources_1.Resource.DIAGNOSIS]: 'Diagnostic',
|
|
108
|
+
[resources_1.Resource.OBSERVATION]: 'Observation',
|
|
109
|
+
[resources_1.Resource.MEDICATION]: 'Médication',
|
|
110
|
+
[resources_1.Resource.ALLERGY]: 'Allergie',
|
|
111
|
+
[resources_1.Resource.IMMUNIZATION]: 'Vaccination',
|
|
112
|
+
[resources_1.Resource.PROCEDURE]: 'Procédure',
|
|
113
|
+
[resources_1.Resource.CLINICAL_NOTE]: 'Note clinique',
|
|
114
|
+
[resources_1.Resource.VITAL_SIGNS]: 'Signes vitaux',
|
|
115
|
+
[resources_1.Resource.MEASURE_MODEL]: 'Modèle de mesure',
|
|
116
|
+
[resources_1.Resource.CALCULATED_MEASURE_MODEL]: 'Modèle de mesure calculée',
|
|
117
|
+
[resources_1.Resource.UPLOADED_DOCUMENT]: 'Document téléversé',
|
|
118
|
+
[resources_1.Resource.DOCUMENT_LAYOUT]: 'Mise en page du document',
|
|
119
|
+
[resources_1.Resource.GENERATED_DOCUMENT]: 'Document généré',
|
|
120
|
+
[resources_1.Resource.DOCUMENT_MODEL]: 'Modèle de document',
|
|
121
|
+
[resources_1.Resource.SNIPPET]: 'Extrait',
|
|
122
|
+
[resources_1.Resource.LOCATION]: 'Lieu',
|
|
123
|
+
[resources_1.Resource.TASK_TYPE]: 'Type de tâche',
|
|
124
|
+
[resources_1.Resource.LAB_RESULT]: 'Résultat de laboratoire',
|
|
125
|
+
[resources_1.Resource.IMAGING]: 'Imagerie',
|
|
126
|
+
[resources_1.Resource.MEMBERSHIP]: 'Adhésion',
|
|
127
|
+
[resources_1.Resource.SETTINGS]: 'Paramètres',
|
|
128
|
+
[resources_1.Resource.NOTIFICATION]: 'Notification',
|
|
129
|
+
[resources_1.Resource.REPORT]: 'Rapport',
|
|
130
|
+
[resources_1.Resource.AUDIT_LOG]: "Journal d'audit",
|
|
131
|
+
[resources_1.Resource.SYSTEM]: 'Système',
|
|
132
|
+
[resources_1.Resource.PUBLIC_RESOURCE]: 'Ressource publique',
|
|
133
|
+
[resources_1.Resource.MEDICAL_RESOURCE]: 'Ressource médicale',
|
|
134
|
+
};
|
|
135
|
+
function humanizeKey(key) {
|
|
136
|
+
return key
|
|
137
|
+
.toLowerCase()
|
|
138
|
+
.split('_')
|
|
139
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
140
|
+
.join(' ');
|
|
141
|
+
}
|
|
142
|
+
function getActionLabel(action, locale = 'us-EN') {
|
|
143
|
+
if (locale === 'fr-FR')
|
|
144
|
+
return frAction[action] ?? humanizeKey(action);
|
|
145
|
+
return enAction[action] ?? humanizeKey(action);
|
|
146
|
+
}
|
|
147
|
+
function getResourceLabel(resource, locale = 'us-EN') {
|
|
148
|
+
if (locale === 'fr-FR')
|
|
149
|
+
return frResourceOverrides[resource] ?? humanizeKey(resource);
|
|
150
|
+
return humanizeKey(resource);
|
|
151
|
+
}
|
|
152
|
+
function getOperationLabel(operation, locale = 'us-EN', opts) {
|
|
153
|
+
const order = opts?.order ?? 'action-resource';
|
|
154
|
+
const sep = opts?.separator ?? ' ';
|
|
155
|
+
const op = typeof operation === 'string' ? operation_1.Operation.fromString(operation) : operation;
|
|
156
|
+
if (!op)
|
|
157
|
+
return '';
|
|
158
|
+
const a = getActionLabel(op.action, locale);
|
|
159
|
+
const r = getResourceLabel(op.resource, locale);
|
|
160
|
+
return order === 'resource-action' ? `${r}${sep}${a}` : `${a}${sep}${r}`;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0pBLHdDQUdDO0FBRUQsNENBR0M7QUFFRCw4Q0FhQztBQXZLRCx1Q0FBbUM7QUFDbkMsMkNBQXdDO0FBQ3hDLDJDQUF1QztBQUt2QyxNQUFNLFFBQVEsR0FBb0M7SUFDaEQsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDbkIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87SUFDdkIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVc7SUFDL0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFDM0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDekIsQ0FBQyxnQkFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsNEJBQTRCO0lBQ2pFLENBQUMsZ0JBQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLDBCQUEwQjtJQUM3RCxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsZUFBZTtJQUN2QyxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsZUFBZTtJQUN2QyxDQUFDLGdCQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxxQkFBcUI7SUFDbkQsQ0FBQyxnQkFBTSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsd0JBQXdCO0lBQ3pELENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTO0lBQzNCLENBQUMsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTO0lBQzNCLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQ3ZCLENBQUMsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQ3ZCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXO0lBQy9CLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQ3hCLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBb0M7SUFDaEQsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU87SUFDeEIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGVBQWU7SUFDaEMsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVc7SUFDNUIsQ0FBQyxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVE7SUFDdEIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVE7SUFDdkIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU87SUFDeEIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDckIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFlBQVk7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVU7SUFDMUIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVU7SUFDM0IsQ0FBQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVc7SUFDL0IsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGVBQWU7SUFDbEMsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVc7SUFDOUIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVM7SUFDMUIsQ0FBQyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVc7SUFDN0IsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVM7SUFDMUIsQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVE7SUFDdkIsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVU7SUFDM0IsQ0FBQyxnQkFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsc0NBQXNDO0lBQzNFLENBQUMsZ0JBQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLHNDQUFzQztJQUN6RSxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUseUJBQXlCO0lBQ2pELENBQUMsZ0JBQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxtQkFBbUI7SUFDM0MsQ0FBQyxnQkFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsaUNBQWlDO0lBQy9ELENBQUMsZ0JBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLCtCQUErQjtJQUNoRSxDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVTtJQUMzQixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVTtJQUMzQixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVTtJQUM1QixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVztJQUM3QixDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVTtJQUMxQixDQUFDLGdCQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBYTtJQUNoQyxDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWTtJQUM3QixDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVztJQUMzQixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsYUFBYTtJQUM5QixDQUFDLGdCQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWTtJQUNoQyxDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUztDQUMxQixDQUFDO0FBRUYsMEZBQTBGO0FBQzFGLE1BQU0sbUJBQW1CLEdBQXNDO0lBQzdELENBQUMsb0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRO0lBQzVCLENBQUMsb0JBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLHFCQUFxQjtJQUNuRCxDQUFDLG9CQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSx1QkFBdUI7SUFDdkQsQ0FBQyxvQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWE7SUFDOUIsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFDN0IsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFDN0IsQ0FBQyxvQkFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsNEJBQTRCO0lBQzlELENBQUMsb0JBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLGlDQUFpQztJQUN4RSxDQUFDLG9CQUFRLENBQUMseUJBQXlCLENBQUMsRUFBRSxpQ0FBaUM7SUFDdkUsQ0FBQyxvQkFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLHFCQUFxQjtJQUNqRCxDQUFDLG9CQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsaUJBQWlCO0lBQzdDLENBQUMsb0JBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLHlCQUF5QjtJQUMxRCxDQUFDLG9CQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRSxrQ0FBa0M7SUFDdkUsQ0FBQyxvQkFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsMEJBQTBCO0lBQzNELENBQUMsb0JBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLDJCQUEyQjtJQUM5RCxDQUFDLG9CQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZTtJQUN4QyxDQUFDLG9CQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCO0lBQzVDLENBQUMsb0JBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxzQkFBc0I7SUFDbEQsQ0FBQyxvQkFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsK0JBQStCO0lBQ2pFLENBQUMsb0JBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZO0lBQ3JDLENBQUMsb0JBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZO0lBQ2xDLENBQUMsb0JBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxhQUFhO0lBQ3JDLENBQUMsb0JBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZO0lBQ25DLENBQUMsb0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVO0lBQzlCLENBQUMsb0JBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxhQUFhO0lBQ3RDLENBQUMsb0JBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXO0lBQ2pDLENBQUMsb0JBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxlQUFlO0lBQ3pDLENBQUMsb0JBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxlQUFlO0lBQ3ZDLENBQUMsb0JBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxrQkFBa0I7SUFDNUMsQ0FBQyxvQkFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsMkJBQTJCO0lBQ2hFLENBQUMsb0JBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG9CQUFvQjtJQUNsRCxDQUFDLG9CQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsMEJBQTBCO0lBQ3RELENBQUMsb0JBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLGlCQUFpQjtJQUNoRCxDQUFDLG9CQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsb0JBQW9CO0lBQy9DLENBQUMsb0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTO0lBQzdCLENBQUMsb0JBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNO0lBQzNCLENBQUMsb0JBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlO0lBQ3JDLENBQUMsb0JBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSx5QkFBeUI7SUFDaEQsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVU7SUFDOUIsQ0FBQyxvQkFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVU7SUFDakMsQ0FBQyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFlBQVk7SUFDakMsQ0FBQyxvQkFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWM7SUFDdkMsQ0FBQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVM7SUFDNUIsQ0FBQyxvQkFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQjtJQUN2QyxDQUFDLG9CQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUztJQUM1QixDQUFDLG9CQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsb0JBQW9CO0lBQ2hELENBQUMsb0JBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLG9CQUFvQjtDQUNsRCxDQUFDO0FBRUYsU0FBUyxXQUFXLENBQUMsR0FBVztJQUM5QixPQUFPLEdBQUc7U0FDUCxXQUFXLEVBQUU7U0FDYixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsU0FBaUIsT0FBTztJQUNyRSxJQUFJLE1BQU0sS0FBSyxPQUFPO1FBQUUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBa0IsRUFBRSxTQUFpQixPQUFPO0lBQzNFLElBQUksTUFBTSxLQUFLLE9BQU87UUFBRSxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLFNBQTZCLEVBQzdCLFNBQWlCLE9BQU8sRUFDeEIsSUFBNEU7SUFFNUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztJQUVuQyxNQUFNLEVBQUUsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFCQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkYsSUFBSSxDQUFDLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNuQixNQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELE9BQU8sS0FBSyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZXMnO1xuXG4vLyBDb3JlIGkxOG4gbG9jYWxlIHR5cGUgKG9ubHkgc3VwcG9ydCB0aGVzZSBleHBsaWNpdCBjb2RlcylcbmV4cG9ydCB0eXBlIExvY2FsZSA9ICdmci1GUicgfCAndXMtRU4nO1xuXG5jb25zdCBlbkFjdGlvbjogUGFydGlhbDxSZWNvcmQ8QWN0aW9uLCBzdHJpbmc+PiA9IHtcbiAgW0FjdGlvbi5DUkVBVEVdOiAnQ3JlYXRlJyxcbiAgW0FjdGlvbi5SRUFEXTogJ1JlYWQnLFxuICBbQWN0aW9uLlVQREFURV06ICdVcGRhdGUnLFxuICBbQWN0aW9uLkRFTEVURV06ICdEZWxldGUnLFxuICBbQWN0aW9uLlBVVF06ICdQdXQnLFxuICBbQWN0aW9uLkxJU1RdOiAnTGlzdCcsXG4gIFtBY3Rpb24uTUFOQUdFXTogJ01hbmFnZScsXG4gIFtBY3Rpb24uVklFV106ICdWaWV3JyxcbiAgW0FjdGlvbi5TRUFSQ0hdOiAnU2VhcmNoJyxcbiAgW0FjdGlvbi5HUkFOVF06ICdHcmFudCcsXG4gIFtBY3Rpb24uUkVWT0tFXTogJ1Jldm9rZScsXG4gIFtBY3Rpb24uUFJFU0NSSUJFXTogJ1ByZXNjcmliZScsXG4gIFtBY3Rpb24uRElBR05PU0VdOiAnRGlhZ25vc2UnLFxuICBbQWN0aW9uLlNDSEVEVUxFXTogJ1NjaGVkdWxlJyxcbiAgW0FjdGlvbi5DQU5DRUxdOiAnQ2FuY2VsJyxcbiAgW0FjdGlvbi5BUFBST1ZFXTogJ0FwcHJvdmUnLFxuICBbQWN0aW9uLlJFSkVDVF06ICdSZWplY3QnLFxuICBbQWN0aW9uLlNJR05dOiAnU2lnbicsXG4gIFtBY3Rpb24uVkVSSUZZXTogJ1ZlcmlmeScsXG4gIFtBY3Rpb24uU0VUX01FRElDQUxfU0VSVklDRV9TVEFUVVNdOiAnU2V0IG1lZGljYWwgc2VydmljZSBzdGF0dXMnLFxuICBbQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfRkVFU106ICdTZXQgbWVkaWNhbCBzZXJ2aWNlIGZlZXMnLFxuICBbQWN0aW9uLlVQREFURV9TVEFUVVNdOiAnVXBkYXRlIHN0YXR1cycsXG4gIFtBY3Rpb24uVklFV19QQVRJRU5UU106ICdWaWV3IHBhdGllbnRzJyxcbiAgW0FjdGlvbi5QVVRfUEFUSUVOVF9QQVlNRU5UXTogJ1B1dCBwYXRpZW50IHBheW1lbnQnLFxuICBbQWN0aW9uLkRFTEVURV9QQVRJRU5UX1BBWU1FTlRdOiAnRGVsZXRlIHBhdGllbnQgcGF5bWVudCcsXG4gIFtBY3Rpb24uRVhQT1JUXTogJ0V4cG9ydCcsXG4gIFtBY3Rpb24uSU1QT1JUXTogJ0ltcG9ydCcsXG4gIFtBY3Rpb24uQVJDSElWRV06ICdBcmNoaXZlJyxcbiAgW0FjdGlvbi5SRVNUT1JFXTogJ1Jlc3RvcmUnLFxuICBbQWN0aW9uLlNIQVJFXTogJ1NoYXJlJyxcbiAgW0FjdGlvbi5ET1dOTE9BRF06ICdEb3dubG9hZCcsXG4gIFtBY3Rpb24uVVBMT0FEXTogJ1VwbG9hZCcsXG4gIFtBY3Rpb24uTE9HSU5dOiAnTG9naW4nLFxuICBbQWN0aW9uLkxPR09VVF06ICdMb2dvdXQnLFxuICBbQWN0aW9uLkNPTkZJR1VSRV06ICdDb25maWd1cmUnLFxuICBbQWN0aW9uLkFVRElUXTogJ0F1ZGl0Jyxcbn07XG5cbmNvbnN0IGZyQWN0aW9uOiBQYXJ0aWFsPFJlY29yZDxBY3Rpb24sIHN0cmluZz4+ID0ge1xuICBbQWN0aW9uLkNSRUFURV06ICdDcsOpZXInLFxuICBbQWN0aW9uLlJFQURdOiAnTGlyZScsXG4gIFtBY3Rpb24uVVBEQVRFXTogJ01ldHRyZSDDoCBqb3VyJyxcbiAgW0FjdGlvbi5ERUxFVEVdOiAnU3VwcHJpbWVyJyxcbiAgW0FjdGlvbi5QVVRdOiAnTWV0dHJlJyxcbiAgW0FjdGlvbi5MSVNUXTogJ0xpc3RlcicsXG4gIFtBY3Rpb24uTUFOQUdFXTogJ0fDqXJlcicsXG4gIFtBY3Rpb24uVklFV106ICdWb2lyJyxcbiAgW0FjdGlvbi5TRUFSQ0hdOiAnUmVjaGVyY2hlcicsXG4gIFtBY3Rpb24uR1JBTlRdOiAnQWNjb3JkZXInLFxuICBbQWN0aW9uLlJFVk9LRV06ICdSw6l2b3F1ZXInLFxuICBbQWN0aW9uLlBSRVNDUklCRV06ICdQcmVzY3JpcmUnLFxuICBbQWN0aW9uLkRJQUdOT1NFXTogJ0RpYWdub3N0aXF1ZXInLFxuICBbQWN0aW9uLlNDSEVEVUxFXTogJ1BsYW5pZmllcicsXG4gIFtBY3Rpb24uQ0FOQ0VMXTogJ0FubnVsZXInLFxuICBbQWN0aW9uLkFQUFJPVkVdOiAnQXBwcm91dmVyJyxcbiAgW0FjdGlvbi5SRUpFQ1RdOiAnUmVqZXRlcicsXG4gIFtBY3Rpb24uU0lHTl06ICdTaWduZXInLFxuICBbQWN0aW9uLlZFUklGWV06ICdWw6lyaWZpZXInLFxuICBbQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTXTogJ0TDqWZpbmlyIGxlIHN0YXR1dCBkdSBzZXJ2aWNlIG3DqWRpY2FsJyxcbiAgW0FjdGlvbi5TRVRfTUVESUNBTF9TRVJWSUNFX0ZFRVNdOiAnRMOpZmluaXIgbGVzIGZyYWlzIGR1IHNlcnZpY2UgbcOpZGljYWwnLFxuICBbQWN0aW9uLlVQREFURV9TVEFUVVNdOiAnTWV0dHJlIMOgIGpvdXIgbGUgc3RhdHV0JyxcbiAgW0FjdGlvbi5WSUVXX1BBVElFTlRTXTogJ1ZvaXIgbGVzIHBhdGllbnRzJyxcbiAgW0FjdGlvbi5QVVRfUEFUSUVOVF9QQVlNRU5UXTogJ0VucmVnaXN0cmVyIGxlIHBhaWVtZW50IHBhdGllbnQnLFxuICBbQWN0aW9uLkRFTEVURV9QQVRJRU5UX1BBWU1FTlRdOiAnU3VwcHJpbWVyIGxlIHBhaWVtZW50IHBhdGllbnQnLFxuICBbQWN0aW9uLkVYUE9SVF06ICdFeHBvcnRlcicsXG4gIFtBY3Rpb24uSU1QT1JUXTogJ0ltcG9ydGVyJyxcbiAgW0FjdGlvbi5BUkNISVZFXTogJ0FyY2hpdmVyJyxcbiAgW0FjdGlvbi5SRVNUT1JFXTogJ1Jlc3RhdXJlcicsXG4gIFtBY3Rpb24uU0hBUkVdOiAnUGFydGFnZXInLFxuICBbQWN0aW9uLkRPV05MT0FEXTogJ1TDqWzDqWNoYXJnZXInLFxuICBbQWN0aW9uLlVQTE9BRF06ICdUw6lsw6l2ZXJzZXInLFxuICBbQWN0aW9uLkxPR0lOXTogJ0Nvbm5leGlvbicsXG4gIFtBY3Rpb24uTE9HT1VUXTogJ0TDqWNvbm5leGlvbicsXG4gIFtBY3Rpb24uQ09ORklHVVJFXTogJ0NvbmZpZ3VyZXInLFxuICBbQWN0aW9uLkFVRElUXTogJ0F1ZGl0ZXInLFxufTtcblxuLy8gRm9yIHJlc291cmNlcyB3ZSBwcm92aWRlIGEgZmV3IGV4cGxpY2l0IEZyZW5jaCBvdmVycmlkZXMgYW5kIGRlZmF1bHQgdG8gaHVtYW5pemVkIG5hbWVzXG5jb25zdCBmclJlc291cmNlT3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxSZXNvdXJjZSwgc3RyaW5nPj4gPSB7XG4gIFtSZXNvdXJjZS5BQ0NPVU5UXTogJ0NvbXB0ZScsXG4gIFtSZXNvdXJjZS5BQ0NPVU5UX09XTkVSU0hJUF06ICdQcm9wcmnDqXTDqSBkdSBjb21wdGUnLFxuICBbUmVzb3VyY2UuQUNDT1VOVF9QUkVGRVJFTkNFU106ICdQcsOpZsOpcmVuY2VzIGR1IGNvbXB0ZScsXG4gIFtSZXNvdXJjZS5VU0VSXTogJ1V0aWxpc2F0ZXVyJyxcbiAgW1Jlc291cmNlLkNPTlRBQ1RdOiAnQ29udGFjdCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UXTogJ1BhdGllbnQnLFxuICBbUmVzb3VyY2UuUEFUSUVOVF9NRURJQ0FMX05PVEVTXTogJ05vdGVzIG3DqWRpY2FsZXMgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UX01FRElDQUxfUFJPUEVSVElFU106ICdQcm9wcmnDqXTDqXMgbcOpZGljYWxlcyBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfUFVCTElDX1BST1BFUlRJRVNdOiAnUHJvcHJpw6l0w6lzIHB1YmxpcXVlcyBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfUEFZTUVOVF06ICdQYWllbWVudCBkdSBwYXRpZW50JyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV06ICdTZXJ2aWNlIG3DqWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9OT1RFXTogJ05vdGUgZHUgc2VydmljZSBtw6lkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfU0NIRURVTEVdOiAnUGxhbmlmaWNhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9GRUVTXTogJ0ZyYWlzIGR1IHNlcnZpY2UgbcOpZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX1NUQVRVU106ICdTdGF0dXQgZHUgc2VydmljZSBtw6lkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX05PVEVdOiAnTm90ZSBtw6lkaWNhbGUnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9SRUNPUkRdOiAnRG9zc2llciBtw6lkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX0hJU1RPUlldOiAnQW50w6ljw6lkZW50cyBtw6lkaWNhdXgnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9ISVNUT1JZX01PREVMXTogXCJNb2TDqGxlIGQnYW50w6ljw6lkZW50cyBtw6lkaWNhdXhcIixcbiAgW1Jlc291cmNlLlBSRVNDUklQVElPTl06ICdPcmRvbm5hbmNlJyxcbiAgW1Jlc291cmNlLkRJQUdOT1NJU106ICdEaWFnbm9zdGljJyxcbiAgW1Jlc291cmNlLk9CU0VSVkFUSU9OXTogJ09ic2VydmF0aW9uJyxcbiAgW1Jlc291cmNlLk1FRElDQVRJT05dOiAnTcOpZGljYXRpb24nLFxuICBbUmVzb3VyY2UuQUxMRVJHWV06ICdBbGxlcmdpZScsXG4gIFtSZXNvdXJjZS5JTU1VTklaQVRJT05dOiAnVmFjY2luYXRpb24nLFxuICBbUmVzb3VyY2UuUFJPQ0VEVVJFXTogJ1Byb2PDqWR1cmUnLFxuICBbUmVzb3VyY2UuQ0xJTklDQUxfTk9URV06ICdOb3RlIGNsaW5pcXVlJyxcbiAgW1Jlc291cmNlLlZJVEFMX1NJR05TXTogJ1NpZ25lcyB2aXRhdXgnLFxuICBbUmVzb3VyY2UuTUVBU1VSRV9NT0RFTF06ICdNb2TDqGxlIGRlIG1lc3VyZScsXG4gIFtSZXNvdXJjZS5DQUxDVUxBVEVEX01FQVNVUkVfTU9ERUxdOiAnTW9kw6hsZSBkZSBtZXN1cmUgY2FsY3Vsw6llJyxcbiAgW1Jlc291cmNlLlVQTE9BREVEX0RPQ1VNRU5UXTogJ0RvY3VtZW50IHTDqWzDqXZlcnPDqScsXG4gIFtSZXNvdXJjZS5ET0NVTUVOVF9MQVlPVVRdOiAnTWlzZSBlbiBwYWdlIGR1IGRvY3VtZW50JyxcbiAgW1Jlc291cmNlLkdFTkVSQVRFRF9ET0NVTUVOVF06ICdEb2N1bWVudCBnw6luw6lyw6knLFxuICBbUmVzb3VyY2UuRE9DVU1FTlRfTU9ERUxdOiAnTW9kw6hsZSBkZSBkb2N1bWVudCcsXG4gIFtSZXNvdXJjZS5TTklQUEVUXTogJ0V4dHJhaXQnLFxuICBbUmVzb3VyY2UuTE9DQVRJT05dOiAnTGlldScsXG4gIFtSZXNvdXJjZS5UQVNLX1RZUEVdOiAnVHlwZSBkZSB0w6JjaGUnLFxuICBbUmVzb3VyY2UuTEFCX1JFU1VMVF06ICdSw6lzdWx0YXQgZGUgbGFib3JhdG9pcmUnLFxuICBbUmVzb3VyY2UuSU1BR0lOR106ICdJbWFnZXJpZScsXG4gIFtSZXNvdXJjZS5NRU1CRVJTSElQXTogJ0FkaMOpc2lvbicsXG4gIFtSZXNvdXJjZS5TRVRUSU5HU106ICdQYXJhbcOodHJlcycsXG4gIFtSZXNvdXJjZS5OT1RJRklDQVRJT05dOiAnTm90aWZpY2F0aW9uJyxcbiAgW1Jlc291cmNlLlJFUE9SVF06ICdSYXBwb3J0JyxcbiAgW1Jlc291cmNlLkFVRElUX0xPR106IFwiSm91cm5hbCBkJ2F1ZGl0XCIsXG4gIFtSZXNvdXJjZS5TWVNURU1dOiAnU3lzdMOobWUnLFxuICBbUmVzb3VyY2UuUFVCTElDX1JFU09VUkNFXTogJ1Jlc3NvdXJjZSBwdWJsaXF1ZScsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1JFU09VUkNFXTogJ1Jlc3NvdXJjZSBtw6lkaWNhbGUnLFxufTtcblxuZnVuY3Rpb24gaHVtYW5pemVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4ga2V5XG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3BsaXQoJ18nKVxuICAgIC5tYXAoKHcpID0+IHcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3LnNsaWNlKDEpKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25MYWJlbChhY3Rpb246IEFjdGlvbiwgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgaWYgKGxvY2FsZSA9PT0gJ2ZyLUZSJykgcmV0dXJuIGZyQWN0aW9uW2FjdGlvbl0gPz8gaHVtYW5pemVLZXkoYWN0aW9uKTtcbiAgcmV0dXJuIGVuQWN0aW9uW2FjdGlvbl0gPz8gaHVtYW5pemVLZXkoYWN0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGFiZWwocmVzb3VyY2U6IFJlc291cmNlLCBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicpOiBzdHJpbmcge1xuICBpZiAobG9jYWxlID09PSAnZnItRlInKSByZXR1cm4gZnJSZXNvdXJjZU92ZXJyaWRlc1tyZXNvdXJjZV0gPz8gaHVtYW5pemVLZXkocmVzb3VyY2UpO1xuICByZXR1cm4gaHVtYW5pemVLZXkocmVzb3VyY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlcmF0aW9uTGFiZWwoXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uIHwgc3RyaW5nLFxuICBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicsXG4gIG9wdHM/OiB7IG9yZGVyPzogJ2FjdGlvbi1yZXNvdXJjZScgfCAncmVzb3VyY2UtYWN0aW9uJzsgc2VwYXJhdG9yPzogc3RyaW5nIH0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBvcmRlciA9IG9wdHM/Lm9yZGVyID8/ICdhY3Rpb24tcmVzb3VyY2UnO1xuICBjb25zdCBzZXAgPSBvcHRzPy5zZXBhcmF0b3IgPz8gJyAnO1xuXG4gIGNvbnN0IG9wID0gdHlwZW9mIG9wZXJhdGlvbiA9PT0gJ3N0cmluZycgPyBPcGVyYXRpb24uZnJvbVN0cmluZyhvcGVyYXRpb24pIDogb3BlcmF0aW9uO1xuICBpZiAoIW9wKSByZXR1cm4gJyc7XG4gIGNvbnN0IGEgPSBnZXRBY3Rpb25MYWJlbChvcC5hY3Rpb24sIGxvY2FsZSk7XG4gIGNvbnN0IHIgPSBnZXRSZXNvdXJjZUxhYmVsKG9wLnJlc291cmNlLCBsb2NhbGUpO1xuICByZXR1cm4gb3JkZXIgPT09ICdyZXNvdXJjZS1hY3Rpb24nID8gYCR7cn0ke3NlcH0ke2F9YCA6IGAke2F9JHtzZXB9JHtyfWA7XG59XG4iXX0=
|
|
@@ -53,6 +53,10 @@ export declare enum Resource {
|
|
|
53
53
|
/**
|
|
54
54
|
* Medical resources - require special access control
|
|
55
55
|
*/
|
|
56
|
+
declare const RESOURCE_CATEGORIES: {
|
|
57
|
+
medical: Resource[];
|
|
58
|
+
public: Resource[];
|
|
59
|
+
};
|
|
56
60
|
export declare const MEDICAL_RESOURCES: Resource[];
|
|
57
61
|
/**
|
|
58
62
|
* Public resources - standard access control
|
|
@@ -66,3 +70,12 @@ export declare function isMedicalResource(resource: Resource): boolean;
|
|
|
66
70
|
* Check if a resource is public
|
|
67
71
|
*/
|
|
68
72
|
export declare function isPublicResource(resource: Resource): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Get all resources across categories (medical + public)
|
|
75
|
+
*/
|
|
76
|
+
export declare function getAllResources(): Resource[];
|
|
77
|
+
/**
|
|
78
|
+
* Return the underlying category buckets (read-only)
|
|
79
|
+
*/
|
|
80
|
+
export declare function getResourceCategories(): Readonly<typeof RESOURCE_CATEGORIES>;
|
|
81
|
+
export {};
|
|
@@ -3,31 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.Resource = void 0;
|
|
4
4
|
exports.isMedicalResource = isMedicalResource;
|
|
5
5
|
exports.isPublicResource = isPublicResource;
|
|
6
|
+
exports.getAllResources = getAllResources;
|
|
7
|
+
exports.getResourceCategories = getResourceCategories;
|
|
6
8
|
/**
|
|
7
9
|
* Resource types for operations
|
|
8
10
|
*/
|
|
9
11
|
var Resource;
|
|
10
12
|
(function (Resource) {
|
|
11
|
-
// Account & Ownership
|
|
12
13
|
Resource["ACCOUNT"] = "ACCOUNT";
|
|
13
14
|
Resource["ACCOUNT_OWNERSHIP"] = "ACCOUNT_OWNERSHIP";
|
|
14
15
|
Resource["ACCOUNT_PREFERENCES"] = "ACCOUNT_PREFERENCES";
|
|
15
|
-
// User & Contact
|
|
16
16
|
Resource["USER"] = "USER";
|
|
17
17
|
Resource["CONTACT"] = "CONTACT";
|
|
18
|
-
// Patient resources
|
|
19
18
|
Resource["PATIENT"] = "PATIENT";
|
|
20
19
|
Resource["PATIENT_MEDICAL_NOTES"] = "PATIENT_MEDICAL_NOTES";
|
|
21
20
|
Resource["PATIENT_MEDICAL_PROPERTIES"] = "PATIENT_MEDICAL_PROPERTIES";
|
|
22
21
|
Resource["PATIENT_PUBLIC_PROPERTIES"] = "PATIENT_PUBLIC_PROPERTIES";
|
|
23
22
|
Resource["PATIENT_PAYMENT"] = "PATIENT_PAYMENT";
|
|
24
|
-
// Medical Service
|
|
25
23
|
Resource["MEDICAL_SERVICE"] = "MEDICAL_SERVICE";
|
|
26
24
|
Resource["MEDICAL_SERVICE_NOTE"] = "MEDICAL_SERVICE_NOTE";
|
|
27
25
|
Resource["MEDICAL_SERVICE_SCHEDULE"] = "MEDICAL_SERVICE_SCHEDULE";
|
|
28
26
|
Resource["MEDICAL_SERVICE_FEES"] = "MEDICAL_SERVICE_FEES";
|
|
29
27
|
Resource["MEDICAL_SERVICE_STATUS"] = "MEDICAL_SERVICE_STATUS";
|
|
30
|
-
// Medical resources
|
|
31
28
|
Resource["MEDICAL_NOTE"] = "MEDICAL_NOTE";
|
|
32
29
|
Resource["MEDICAL_RECORD"] = "MEDICAL_RECORD";
|
|
33
30
|
Resource["MEDICAL_HISTORY"] = "MEDICAL_HISTORY";
|
|
@@ -39,102 +36,113 @@ var Resource;
|
|
|
39
36
|
Resource["ALLERGY"] = "ALLERGY";
|
|
40
37
|
Resource["IMMUNIZATION"] = "IMMUNIZATION";
|
|
41
38
|
Resource["PROCEDURE"] = "PROCEDURE";
|
|
42
|
-
// Clinical & Measurements
|
|
43
39
|
Resource["CLINICAL_NOTE"] = "CLINICAL_NOTE";
|
|
44
40
|
Resource["VITAL_SIGNS"] = "VITAL_SIGNS";
|
|
45
41
|
Resource["MEASURE_MODEL"] = "MEASURE_MODEL";
|
|
46
42
|
Resource["CALCULATED_MEASURE_MODEL"] = "CALCULATED_MEASURE_MODEL";
|
|
47
|
-
// Documents
|
|
48
43
|
Resource["UPLOADED_DOCUMENT"] = "UPLOADED_DOCUMENT";
|
|
49
44
|
Resource["DOCUMENT_LAYOUT"] = "DOCUMENT_LAYOUT";
|
|
50
45
|
Resource["GENERATED_DOCUMENT"] = "GENERATED_DOCUMENT";
|
|
51
46
|
Resource["DOCUMENT_MODEL"] = "DOCUMENT_MODEL";
|
|
52
47
|
Resource["SNIPPET"] = "SNIPPET";
|
|
53
|
-
// Scheduling & Location
|
|
54
48
|
Resource["LOCATION"] = "LOCATION";
|
|
55
49
|
Resource["TASK_TYPE"] = "TASK_TYPE";
|
|
56
|
-
// Diagnostic
|
|
57
50
|
Resource["LAB_RESULT"] = "LAB_RESULT";
|
|
58
51
|
Resource["IMAGING"] = "IMAGING";
|
|
59
|
-
// Membership & Settings
|
|
60
52
|
Resource["MEMBERSHIP"] = "MEMBERSHIP";
|
|
61
53
|
Resource["SETTINGS"] = "SETTINGS";
|
|
62
|
-
// System
|
|
63
54
|
Resource["NOTIFICATION"] = "NOTIFICATION";
|
|
64
55
|
Resource["REPORT"] = "REPORT";
|
|
65
56
|
Resource["AUDIT_LOG"] = "AUDIT_LOG";
|
|
66
57
|
Resource["SYSTEM"] = "SYSTEM";
|
|
67
|
-
// Generic resources
|
|
68
58
|
Resource["PUBLIC_RESOURCE"] = "PUBLIC_RESOURCE";
|
|
69
59
|
Resource["MEDICAL_RESOURCE"] = "MEDICAL_RESOURCE";
|
|
70
60
|
})(Resource || (exports.Resource = Resource = {}));
|
|
71
61
|
/**
|
|
72
62
|
* Medical resources - require special access control
|
|
73
63
|
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
64
|
+
// Central definition of resource categories for easier maintenance
|
|
65
|
+
// Explicitly widen tuple arrays to Resource[] to avoid overly narrow union inference
|
|
66
|
+
const RESOURCE_CATEGORIES = {
|
|
67
|
+
medical: [
|
|
68
|
+
Resource.PATIENT,
|
|
69
|
+
Resource.PATIENT_MEDICAL_NOTES,
|
|
70
|
+
Resource.PATIENT_MEDICAL_PROPERTIES,
|
|
71
|
+
Resource.PATIENT_PAYMENT,
|
|
72
|
+
Resource.MEDICAL_SERVICE,
|
|
73
|
+
Resource.MEDICAL_SERVICE_NOTE,
|
|
74
|
+
Resource.MEDICAL_SERVICE_SCHEDULE,
|
|
75
|
+
Resource.MEDICAL_SERVICE_FEES,
|
|
76
|
+
Resource.MEDICAL_SERVICE_STATUS,
|
|
77
|
+
Resource.MEDICAL_NOTE,
|
|
78
|
+
Resource.MEDICAL_RECORD,
|
|
79
|
+
Resource.MEDICAL_HISTORY,
|
|
80
|
+
Resource.MEDICAL_HISTORY_MODEL,
|
|
81
|
+
Resource.PRESCRIPTION,
|
|
82
|
+
Resource.DIAGNOSIS,
|
|
83
|
+
Resource.OBSERVATION,
|
|
84
|
+
Resource.MEDICATION,
|
|
85
|
+
Resource.ALLERGY,
|
|
86
|
+
Resource.IMMUNIZATION,
|
|
87
|
+
Resource.PROCEDURE,
|
|
88
|
+
Resource.CLINICAL_NOTE,
|
|
89
|
+
Resource.VITAL_SIGNS,
|
|
90
|
+
Resource.MEASURE_MODEL,
|
|
91
|
+
Resource.CALCULATED_MEASURE_MODEL,
|
|
92
|
+
Resource.LAB_RESULT,
|
|
93
|
+
Resource.IMAGING,
|
|
94
|
+
Resource.MEDICAL_RESOURCE,
|
|
95
|
+
],
|
|
96
|
+
public: [
|
|
97
|
+
Resource.ACCOUNT,
|
|
98
|
+
Resource.ACCOUNT_OWNERSHIP,
|
|
99
|
+
Resource.ACCOUNT_PREFERENCES,
|
|
100
|
+
Resource.USER,
|
|
101
|
+
Resource.CONTACT,
|
|
102
|
+
Resource.PATIENT_PUBLIC_PROPERTIES,
|
|
103
|
+
Resource.UPLOADED_DOCUMENT,
|
|
104
|
+
Resource.DOCUMENT_LAYOUT,
|
|
105
|
+
Resource.GENERATED_DOCUMENT,
|
|
106
|
+
Resource.DOCUMENT_MODEL,
|
|
107
|
+
Resource.SNIPPET,
|
|
108
|
+
Resource.LOCATION,
|
|
109
|
+
Resource.TASK_TYPE,
|
|
110
|
+
Resource.MEMBERSHIP,
|
|
111
|
+
Resource.SETTINGS,
|
|
112
|
+
Resource.NOTIFICATION,
|
|
113
|
+
Resource.REPORT,
|
|
114
|
+
Resource.AUDIT_LOG,
|
|
115
|
+
Resource.SYSTEM,
|
|
116
|
+
Resource.PUBLIC_RESOURCE,
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
exports.MEDICAL_RESOURCES = [...RESOURCE_CATEGORIES.medical];
|
|
103
120
|
/**
|
|
104
121
|
* Public resources - standard access control
|
|
105
122
|
*/
|
|
106
|
-
exports.PUBLIC_RESOURCES = [
|
|
107
|
-
Resource.ACCOUNT,
|
|
108
|
-
Resource.ACCOUNT_OWNERSHIP,
|
|
109
|
-
Resource.ACCOUNT_PREFERENCES,
|
|
110
|
-
Resource.USER,
|
|
111
|
-
Resource.CONTACT,
|
|
112
|
-
Resource.PATIENT_PUBLIC_PROPERTIES,
|
|
113
|
-
Resource.UPLOADED_DOCUMENT,
|
|
114
|
-
Resource.DOCUMENT_LAYOUT,
|
|
115
|
-
Resource.GENERATED_DOCUMENT,
|
|
116
|
-
Resource.DOCUMENT_MODEL,
|
|
117
|
-
Resource.SNIPPET,
|
|
118
|
-
Resource.LOCATION,
|
|
119
|
-
Resource.TASK_TYPE,
|
|
120
|
-
Resource.MEMBERSHIP,
|
|
121
|
-
Resource.SETTINGS,
|
|
122
|
-
Resource.NOTIFICATION,
|
|
123
|
-
Resource.REPORT,
|
|
124
|
-
Resource.AUDIT_LOG,
|
|
125
|
-
Resource.SYSTEM,
|
|
126
|
-
Resource.PUBLIC_RESOURCE,
|
|
127
|
-
];
|
|
123
|
+
exports.PUBLIC_RESOURCES = [...RESOURCE_CATEGORIES.public];
|
|
128
124
|
/**
|
|
129
125
|
* Check if a resource is medical
|
|
130
126
|
*/
|
|
131
127
|
function isMedicalResource(resource) {
|
|
132
|
-
return
|
|
128
|
+
return RESOURCE_CATEGORIES.medical.indexOf(resource) !== -1;
|
|
133
129
|
}
|
|
134
130
|
/**
|
|
135
131
|
* Check if a resource is public
|
|
136
132
|
*/
|
|
137
133
|
function isPublicResource(resource) {
|
|
138
|
-
return
|
|
134
|
+
return RESOURCE_CATEGORIES.public.indexOf(resource) !== -1;
|
|
139
135
|
}
|
|
140
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Get all resources across categories (medical + public)
|
|
138
|
+
*/
|
|
139
|
+
function getAllResources() {
|
|
140
|
+
return [...RESOURCE_CATEGORIES.medical, ...RESOURCE_CATEGORIES.public];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Return the underlying category buckets (read-only)
|
|
144
|
+
*/
|
|
145
|
+
function getResourceCategories() {
|
|
146
|
+
return RESOURCE_CATEGORIES;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZIQSw4Q0FFQztBQUtELDRDQUVDO0FBS0QsMENBRUM7QUFLRCxzREFFQztBQXBKRDs7R0FFRztBQUNILElBQVksUUFnRFg7QUFoREQsV0FBWSxRQUFRO0lBQ2xCLCtCQUFtQixDQUFBO0lBQ25CLG1EQUF1QyxDQUFBO0lBQ3ZDLHVEQUEyQyxDQUFBO0lBQzNDLHlCQUFhLENBQUE7SUFDYiwrQkFBbUIsQ0FBQTtJQUNuQiwrQkFBbUIsQ0FBQTtJQUNuQiwyREFBK0MsQ0FBQTtJQUMvQyxxRUFBeUQsQ0FBQTtJQUN6RCxtRUFBdUQsQ0FBQTtJQUN2RCwrQ0FBbUMsQ0FBQTtJQUNuQywrQ0FBbUMsQ0FBQTtJQUNuQyx5REFBNkMsQ0FBQTtJQUM3QyxpRUFBcUQsQ0FBQTtJQUNyRCx5REFBNkMsQ0FBQTtJQUM3Qyw2REFBaUQsQ0FBQTtJQUNqRCx5Q0FBNkIsQ0FBQTtJQUM3Qiw2Q0FBaUMsQ0FBQTtJQUNqQywrQ0FBbUMsQ0FBQTtJQUNuQywyREFBK0MsQ0FBQTtJQUMvQyx5Q0FBNkIsQ0FBQTtJQUM3QixtQ0FBdUIsQ0FBQTtJQUN2Qix1Q0FBMkIsQ0FBQTtJQUMzQixxQ0FBeUIsQ0FBQTtJQUN6QiwrQkFBbUIsQ0FBQTtJQUNuQix5Q0FBNkIsQ0FBQTtJQUM3QixtQ0FBdUIsQ0FBQTtJQUN2QiwyQ0FBK0IsQ0FBQTtJQUMvQix1Q0FBMkIsQ0FBQTtJQUMzQiwyQ0FBK0IsQ0FBQTtJQUMvQixpRUFBcUQsQ0FBQTtJQUNyRCxtREFBdUMsQ0FBQTtJQUN2QywrQ0FBbUMsQ0FBQTtJQUNuQyxxREFBeUMsQ0FBQTtJQUN6Qyw2Q0FBaUMsQ0FBQTtJQUNqQywrQkFBbUIsQ0FBQTtJQUNuQixpQ0FBcUIsQ0FBQTtJQUNyQixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6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O0FBQ3pFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQjtJQUNuQyxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIHR5cGVzIGZvciBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBlbnVtIFJlc291cmNlIHtcbiAgQUNDT1VOVCA9ICdBQ0NPVU5UJyxcbiAgQUNDT1VOVF9PV05FUlNISVAgPSAnQUNDT1VOVF9PV05FUlNISVAnLFxuICBBQ0NPVU5UX1BSRUZFUkVOQ0VTID0gJ0FDQ09VTlRfUFJFRkVSRU5DRVMnLFxuICBVU0VSID0gJ1VTRVInLFxuICBDT05UQUNUID0gJ0NPTlRBQ1QnLFxuICBQQVRJRU5UID0gJ1BBVElFTlQnLFxuICBQQVRJRU5UX01FRElDQUxfTk9URVMgPSAnUEFUSUVOVF9NRURJQ0FMX05PVEVTJyxcbiAgUEFUSUVOVF9NRURJQ0FMX1BST1BFUlRJRVMgPSAnUEFUSUVOVF9NRURJQ0FMX1BST1BFUlRJRVMnLFxuICBQQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTID0gJ1BBVElFTlRfUFVCTElDX1BST1BFUlRJRVMnLFxuICBQQVRJRU5UX1BBWU1FTlQgPSAnUEFUSUVOVF9QQVlNRU5UJyxcbiAgTUVESUNBTF9TRVJWSUNFID0gJ01FRElDQUxfU0VSVklDRScsXG4gIE1FRElDQUxfU0VSVklDRV9OT1RFID0gJ01FRElDQUxfU0VSVklDRV9OT1RFJyxcbiAgTUVESUNBTF9TRVJWSUNFX1NDSEVEVUxFID0gJ01FRElDQUxfU0VSVklDRV9TQ0hFRFVMRScsXG4gIE1FRElDQUxfU0VSVklDRV9GRUVTID0gJ01FRElDQUxfU0VSVklDRV9GRUVTJyxcbiAgTUVESUNBTF9TRVJWSUNFX1NUQVRVUyA9ICdNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTJyxcbiAgTUVESUNBTF9OT1RFID0gJ01FRElDQUxfTk9URScsXG4gIE1FRElDQUxfUkVDT1JEID0gJ01FRElDQUxfUkVDT1JEJyxcbiAgTUVESUNBTF9ISVNUT1JZID0gJ01FRElDQUxfSElTVE9SWScsXG4gIE1FRElDQUxfSElTVE9SWV9NT0RFTCA9ICdNRURJQ0FMX0hJU1RPUllfTU9ERUwnLFxuICBQUkVTQ1JJUFRJT04gPSAnUFJFU0NSSVBUSU9OJyxcbiAgRElBR05PU0lTID0gJ0RJQUdOT1NJUycsXG4gIE9CU0VSVkFUSU9OID0gJ09CU0VSVkFUSU9OJyxcbiAgTUVESUNBVElPTiA9ICdNRURJQ0FUSU9OJyxcbiAgQUxMRVJHWSA9ICdBTExFUkdZJyxcbiAgSU1NVU5JWkFUSU9OID0gJ0lNTVVOSVpBVElPTicsXG4gIFBST0NFRFVSRSA9ICdQUk9DRURVUkUnLFxuICBDTElOSUNBTF9OT1RFID0gJ0NMSU5JQ0FMX05PVEUnLFxuICBWSVRBTF9TSUdOUyA9ICdWSVRBTF9TSUdOUycsXG4gIE1FQVNVUkVfTU9ERUwgPSAnTUVBU1VSRV9NT0RFTCcsXG4gIENBTENVTEFURURfTUVBU1VSRV9NT0RFTCA9ICdDQUxDVUxBVEVEX01FQVNVUkVfTU9ERUwnLFxuICBVUExPQURFRF9ET0NVTUVOVCA9ICdVUExPQURFRF9ET0NVTUVOVCcsXG4gIERPQ1VNRU5UX0xBWU9VVCA9ICdET0NVTUVOVF9MQVlPVVQnLFxuICBHRU5FUkFURURfRE9DVU1FTlQgPSAnR0VORVJBVEVEX0RPQ1VNRU5UJyxcbiAgRE9DVU1FTlRfTU9ERUwgPSAnRE9DVU1FTlRfTU9ERUwnLFxuICBTTklQUEVUID0gJ1NOSVBQRVQnLFxuICBMT0NBVElPTiA9ICdMT0NBVElPTicsXG4gIFRBU0tfVFlQRSA9ICdUQVNLX1RZUEUnLFxuICBMQUJfUkVTVUxUID0gJ0xBQl9SRVNVTFQnLFxuICBJTUFHSU5HID0gJ0lNQUdJTkcnLFxuICBNRU1CRVJTSElQID0gJ01FTUJFUlNISVAnLFxuICBTRVRUSU5HUyA9ICdTRVRUSU5HUycsXG4gIE5PVElGSUNBVElPTiA9ICdOT1RJRklDQVRJT04nLFxuICBSRVBPUlQgPSAnUkVQT1JUJyxcbiAgQVVESVRfTE9HID0gJ0FVRElUX0xPRycsXG4gIFNZU1RFTSA9ICdTWVNURU0nLFxuICBQVUJMSUNfUkVTT1VSQ0UgPSAnUFVCTElDX1JFU09VUkNFJyxcbiAgTUVESUNBTF9SRVNPVVJDRSA9ICdNRURJQ0FMX1JFU09VUkNFJyxcbn1cblxuLyoqXG4gKiBNZWRpY2FsIHJlc291cmNlcyAtIHJlcXVpcmUgc3BlY2lhbCBhY2Nlc3MgY29udHJvbFxuICovXG4vLyBDZW50cmFsIGRlZmluaXRpb24gb2YgcmVzb3VyY2UgY2F0ZWdvcmllcyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlXG4vLyBFeHBsaWNpdGx5IHdpZGVuIHR1cGxlIGFycmF5cyB0byBSZXNvdXJjZVtdIHRvIGF2b2lkIG92ZXJseSBuYXJyb3cgdW5pb24gaW5mZXJlbmNlXG5jb25zdCBSRVNPVVJDRV9DQVRFR09SSUVTOiB7XG4gIG1lZGljYWw6IFJlc291cmNlW107XG4gIHB1YmxpYzogUmVzb3VyY2VbXTtcbn0gPSB7XG4gIG1lZGljYWw6IFtcbiAgICBSZXNvdXJjZS5QQVRJRU5ULFxuICAgIFJlc291cmNlLlBBVElFTlRfTUVESUNBTF9OT1RFUyxcbiAgICBSZXNvdXJjZS5QQVRJRU5UX01FRElDQUxfUFJPUEVSVElFUyxcbiAgICBSZXNvdXJjZS5QQVRJRU5UX1BBWU1FTlQsXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLFxuICAgIFJlc291cmNlLk1FRElDQUxfU0VSVklDRV9OT1RFLFxuICAgIFJlc291cmNlLk1FRElDQUxfU0VSVklDRV9TQ0hFRFVMRSxcbiAgICBSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfRkVFUyxcbiAgICBSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTLFxuICAgIFJlc291cmNlLk1FRElDQUxfTk9URSxcbiAgICBSZXNvdXJjZS5NRURJQ0FMX1JFQ09SRCxcbiAgICBSZXNvdXJjZS5NRURJQ0FMX0hJU1RPUlksXG4gICAgUmVzb3VyY2UuTUVESUNBTF9ISVNUT1JZX01PREVMLFxuICAgIFJlc291cmNlLlBSRVNDUklQVElPTixcbiAgICBSZXNvdXJjZS5ESUFHTk9TSVMsXG4gICAgUmVzb3VyY2UuT0JTRVJWQVRJT04sXG4gICAgUmVzb3VyY2UuTUVESUNBVElPTixcbiAgICBSZXNvdXJjZS5BTExFUkdZLFxuICAgIFJlc291cmNlLklNTVVOSVpBVElPTixcbiAgICBSZXNvdXJjZS5QUk9DRURVUkUsXG4gICAgUmVzb3VyY2UuQ0xJTklDQUxfTk9URSxcbiAgICBSZXNvdXJjZS5WSVRBTF9TSUdOUyxcbiAgICBSZXNvdXJjZS5NRUFTVVJFX01PREVMLFxuICAgIFJlc291cmNlLkNBTENVTEFURURfTUVBU1VSRV9NT0RFTCxcbiAgICBSZXNvdXJjZS5MQUJfUkVTVUxULFxuICAgIFJlc291cmNlLklNQUdJTkcsXG4gICAgUmVzb3VyY2UuTUVESUNBTF9SRVNPVVJDRSxcbiAgXSxcbiAgcHVibGljOiBbXG4gICAgUmVzb3VyY2UuQUNDT1VOVCxcbiAgICBSZXNvdXJjZS5BQ0NPVU5UX09XTkVSU0hJUCxcbiAgICBSZXNvdXJjZS5BQ0NPVU5UX1BSRUZFUkVOQ0VTLFxuICAgIFJlc291cmNlLlVTRVIsXG4gICAgUmVzb3VyY2UuQ09OVEFDVCxcbiAgICBSZXNvdXJjZS5QQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTLFxuICAgIFJlc291cmNlLlVQTE9BREVEX0RPQ1VNRU5ULFxuICAgIFJlc291cmNlLkRPQ1VNRU5UX0xBWU9VVCxcbiAgICBSZXNvdXJjZS5HRU5FUkFURURfRE9DVU1FTlQsXG4gICAgUmVzb3VyY2UuRE9DVU1FTlRfTU9ERUwsXG4gICAgUmVzb3VyY2UuU05JUFBFVCxcbiAgICBSZXNvdXJjZS5MT0NBVElPTixcbiAgICBSZXNvdXJjZS5UQVNLX1RZUEUsXG4gICAgUmVzb3VyY2UuTUVNQkVSU0hJUCxcbiAgICBSZXNvdXJjZS5TRVRUSU5HUyxcbiAgICBSZXNvdXJjZS5OT1RJRklDQVRJT04sXG4gICAgUmVzb3VyY2UuUkVQT1JULFxuICAgIFJlc291cmNlLkFVRElUX0xPRyxcbiAgICBSZXNvdXJjZS5TWVNURU0sXG4gICAgUmVzb3VyY2UuUFVCTElDX1JFU09VUkNFLFxuICBdLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElDQUxfUkVTT1VSQ0VTOiBSZXNvdXJjZVtdID0gWy4uLlJFU09VUkNFX0NBVEVHT1JJRVMubWVkaWNhbF07XG5cbi8qKlxuICogUHVibGljIHJlc291cmNlcyAtIHN0YW5kYXJkIGFjY2VzcyBjb250cm9sXG4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSUNfUkVTT1VSQ0VTOiBSZXNvdXJjZVtdID0gWy4uLlJFU09VUkNFX0NBVEVHT1JJRVMucHVibGljXTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHJlc291cmNlIGlzIG1lZGljYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWVkaWNhbFJlc291cmNlKHJlc291cmNlOiBSZXNvdXJjZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gUkVTT1VSQ0VfQ0FURUdPUklFUy5tZWRpY2FsLmluZGV4T2YocmVzb3VyY2UpICE9PSAtMTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHJlc291cmNlIGlzIHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQdWJsaWNSZXNvdXJjZShyZXNvdXJjZTogUmVzb3VyY2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIFJFU09VUkNFX0NBVEVHT1JJRVMucHVibGljLmluZGV4T2YocmVzb3VyY2UpICE9PSAtMTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHJlc291cmNlcyBhY3Jvc3MgY2F0ZWdvcmllcyAobWVkaWNhbCArIHB1YmxpYylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFJlc291cmNlcygpOiBSZXNvdXJjZVtdIHtcbiAgcmV0dXJuIFsuLi5SRVNPVVJDRV9DQVRFR09SSUVTLm1lZGljYWwsIC4uLlJFU09VUkNFX0NBVEVHT1JJRVMucHVibGljXTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHVuZGVybHlpbmcgY2F0ZWdvcnkgYnVja2V0cyAocmVhZC1vbmx5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VDYXRlZ29yaWVzKCk6IFJlYWRvbmx5PHR5cGVvZiBSRVNPVVJDRV9DQVRFR09SSUVTPiB7XG4gIHJldHVybiBSRVNPVVJDRV9DQVRFR09SSUVTO1xufVxuIl19
|