@blackcode_sa/metaestetics-api 1.12.62 → 1.12.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/index.d.mts +4 -2
- package/dist/admin/index.d.ts +4 -2
- package/dist/admin/index.js +4 -45
- package/dist/admin/index.mjs +4 -45
- package/dist/backoffice/index.d.mts +86 -1
- package/dist/backoffice/index.d.ts +86 -1
- package/dist/backoffice/index.js +308 -0
- package/dist/backoffice/index.mjs +306 -0
- package/dist/index.d.mts +99 -3
- package/dist/index.d.ts +99 -3
- package/dist/index.js +545 -281
- package/dist/index.mjs +867 -603
- package/package.json +119 -119
- package/src/__mocks__/firstore.ts +10 -10
- package/src/admin/aggregation/README.md +79 -79
- package/src/admin/aggregation/appointment/README.md +128 -128
- package/src/admin/aggregation/appointment/appointment.aggregation.service.ts +1844 -1844
- package/src/admin/aggregation/appointment/index.ts +1 -1
- package/src/admin/aggregation/clinic/README.md +52 -52
- package/src/admin/aggregation/clinic/clinic.aggregation.service.ts +703 -703
- package/src/admin/aggregation/clinic/index.ts +1 -1
- package/src/admin/aggregation/forms/README.md +13 -13
- package/src/admin/aggregation/forms/filled-forms.aggregation.service.ts +322 -322
- package/src/admin/aggregation/forms/index.ts +1 -1
- package/src/admin/aggregation/index.ts +8 -8
- package/src/admin/aggregation/patient/README.md +27 -27
- package/src/admin/aggregation/patient/index.ts +1 -1
- package/src/admin/aggregation/patient/patient.aggregation.service.ts +141 -141
- package/src/admin/aggregation/practitioner/README.md +42 -42
- package/src/admin/aggregation/practitioner/index.ts +1 -1
- package/src/admin/aggregation/practitioner/practitioner.aggregation.service.ts +433 -433
- package/src/admin/aggregation/practitioner-invite/index.ts +1 -1
- package/src/admin/aggregation/practitioner-invite/practitioner-invite.aggregation.service.ts +961 -961
- package/src/admin/aggregation/procedure/README.md +43 -43
- package/src/admin/aggregation/procedure/index.ts +1 -1
- package/src/admin/aggregation/procedure/procedure.aggregation.service.ts +702 -702
- package/src/admin/aggregation/reviews/index.ts +1 -1
- package/src/admin/aggregation/reviews/reviews.aggregation.service.ts +641 -689
- package/src/admin/booking/README.md +125 -125
- package/src/admin/booking/booking.admin.ts +1037 -1037
- package/src/admin/booking/booking.calculator.ts +712 -712
- package/src/admin/booking/booking.types.ts +59 -59
- package/src/admin/booking/index.ts +3 -3
- package/src/admin/booking/timezones-problem.md +185 -185
- package/src/admin/calendar/README.md +7 -7
- package/src/admin/calendar/calendar.admin.service.ts +345 -345
- package/src/admin/calendar/index.ts +1 -1
- package/src/admin/documentation-templates/document-manager.admin.ts +260 -260
- package/src/admin/documentation-templates/index.ts +1 -1
- package/src/admin/free-consultation/free-consultation-utils.admin.ts +148 -148
- package/src/admin/free-consultation/index.ts +1 -1
- package/src/admin/index.ts +75 -75
- package/src/admin/logger/index.ts +78 -78
- package/src/admin/mailing/README.md +95 -95
- package/src/admin/mailing/appointment/appointment.mailing.service.ts +732 -732
- package/src/admin/mailing/appointment/index.ts +1 -1
- package/src/admin/mailing/appointment/templates/patient/appointment-confirmed.html +40 -40
- package/src/admin/mailing/base.mailing.service.ts +208 -208
- package/src/admin/mailing/index.ts +3 -3
- package/src/admin/mailing/practitionerInvite/existing-practitioner-invite.mailing.ts +611 -611
- package/src/admin/mailing/practitionerInvite/index.ts +2 -2
- package/src/admin/mailing/practitionerInvite/practitionerInvite.mailing.ts +395 -395
- package/src/admin/mailing/practitionerInvite/templates/existing-practitioner-invitation.template.ts +155 -155
- package/src/admin/mailing/practitionerInvite/templates/invitation.template.ts +101 -101
- package/src/admin/mailing/practitionerInvite/templates/invite-accepted-notification.template.ts +228 -228
- package/src/admin/mailing/practitionerInvite/templates/invite-rejected-notification.template.ts +242 -242
- package/src/admin/notifications/index.ts +1 -1
- package/src/admin/notifications/notifications.admin.ts +710 -710
- package/src/admin/requirements/README.md +128 -128
- package/src/admin/requirements/index.ts +1 -1
- package/src/admin/requirements/patient-requirements.admin.service.ts +475 -475
- package/src/admin/users/index.ts +1 -1
- package/src/admin/users/user-profile.admin.ts +405 -405
- package/src/backoffice/constants/certification.constants.ts +13 -13
- package/src/backoffice/constants/index.ts +1 -1
- package/src/backoffice/errors/backoffice.errors.ts +181 -181
- package/src/backoffice/errors/index.ts +1 -1
- package/src/backoffice/expo-safe/README.md +26 -26
- package/src/backoffice/expo-safe/index.ts +41 -41
- package/src/backoffice/index.ts +5 -5
- package/src/backoffice/services/FIXES_README.md +102 -102
- package/src/backoffice/services/README.md +40 -40
- package/src/backoffice/services/brand.service.ts +256 -256
- package/src/backoffice/services/category.service.ts +318 -318
- package/src/backoffice/services/constants.service.ts +385 -385
- package/src/backoffice/services/documentation-template.service.ts +202 -202
- package/src/backoffice/services/index.ts +11 -8
- package/src/backoffice/services/migrate-products.ts +116 -116
- package/src/backoffice/services/product.service.ts +553 -553
- package/src/backoffice/services/requirement.service.ts +235 -235
- package/src/backoffice/services/subcategory.service.ts +395 -395
- package/src/backoffice/services/technology.service.ts +1083 -1070
- package/src/backoffice/types/README.md +12 -12
- package/src/backoffice/types/admin-constants.types.ts +69 -69
- package/src/backoffice/types/brand.types.ts +29 -29
- package/src/backoffice/types/category.types.ts +62 -62
- package/src/backoffice/types/documentation-templates.types.ts +28 -28
- package/src/backoffice/types/index.ts +10 -10
- package/src/backoffice/types/procedure-product.types.ts +38 -38
- package/src/backoffice/types/product.types.ts +240 -240
- package/src/backoffice/types/requirement.types.ts +63 -63
- package/src/backoffice/types/static/README.md +18 -18
- package/src/backoffice/types/static/blocking-condition.types.ts +21 -21
- package/src/backoffice/types/static/certification.types.ts +37 -37
- package/src/backoffice/types/static/contraindication.types.ts +19 -19
- package/src/backoffice/types/static/index.ts +6 -6
- package/src/backoffice/types/static/pricing.types.ts +16 -16
- package/src/backoffice/types/static/procedure-family.types.ts +14 -14
- package/src/backoffice/types/static/treatment-benefit.types.ts +22 -22
- package/src/backoffice/types/subcategory.types.ts +34 -34
- package/src/backoffice/types/technology.types.ts +163 -161
- package/src/backoffice/validations/index.ts +1 -1
- package/src/backoffice/validations/schemas.ts +164 -163
- package/src/config/__mocks__/firebase.ts +99 -99
- package/src/config/firebase.ts +78 -78
- package/src/config/index.ts +9 -9
- package/src/errors/auth.error.ts +6 -6
- package/src/errors/auth.errors.ts +200 -200
- package/src/errors/clinic.errors.ts +32 -32
- package/src/errors/firebase.errors.ts +47 -47
- package/src/errors/user.errors.ts +99 -99
- package/src/index.backup.ts +407 -407
- package/src/index.ts +6 -6
- package/src/locales/en.ts +31 -31
- package/src/recommender/admin/index.ts +1 -1
- package/src/recommender/admin/services/recommender.service.admin.ts +5 -5
- package/src/recommender/front/index.ts +1 -1
- package/src/recommender/front/services/onboarding.service.ts +5 -5
- package/src/recommender/front/services/recommender.service.ts +3 -3
- package/src/recommender/index.ts +1 -1
- package/src/services/PATIENTAUTH.MD +197 -197
- package/src/services/README.md +106 -106
- package/src/services/__tests__/auth/auth.mock.test.ts +17 -17
- package/src/services/__tests__/auth/auth.setup.ts +293 -293
- package/src/services/__tests__/auth.service.test.ts +346 -346
- package/src/services/__tests__/base.service.test.ts +77 -77
- package/src/services/__tests__/user.service.test.ts +528 -528
- package/src/services/appointment/README.md +17 -17
- package/src/services/appointment/appointment.service.ts +2505 -2082
- package/src/services/appointment/index.ts +1 -1
- package/src/services/appointment/utils/appointment.utils.ts +552 -552
- package/src/services/appointment/utils/extended-procedure.utils.ts +314 -314
- package/src/services/appointment/utils/form-initialization.utils.ts +225 -225
- package/src/services/appointment/utils/recommended-procedure.utils.ts +195 -195
- package/src/services/appointment/utils/zone-management.utils.ts +353 -353
- package/src/services/appointment/utils/zone-photo.utils.ts +152 -152
- package/src/services/auth/auth.service.ts +989 -989
- package/src/services/auth/auth.v2.service.ts +961 -961
- package/src/services/auth/index.ts +7 -7
- package/src/services/auth/utils/error.utils.ts +90 -90
- package/src/services/auth/utils/firebase.utils.ts +49 -49
- package/src/services/auth/utils/index.ts +21 -21
- package/src/services/auth/utils/practitioner.utils.ts +125 -125
- package/src/services/base.service.ts +41 -41
- package/src/services/calendar/calendar.service.ts +1077 -1077
- package/src/services/calendar/calendar.v2.service.ts +1683 -1683
- package/src/services/calendar/calendar.v3.service.ts +313 -313
- package/src/services/calendar/externalCalendar.service.ts +178 -178
- package/src/services/calendar/index.ts +5 -5
- package/src/services/calendar/synced-calendars.service.ts +743 -743
- package/src/services/calendar/utils/appointment.utils.ts +265 -265
- package/src/services/calendar/utils/calendar-event.utils.ts +646 -646
- package/src/services/calendar/utils/clinic.utils.ts +237 -237
- package/src/services/calendar/utils/docs.utils.ts +157 -157
- package/src/services/calendar/utils/google-calendar.utils.ts +697 -697
- package/src/services/calendar/utils/index.ts +8 -8
- package/src/services/calendar/utils/patient.utils.ts +198 -198
- package/src/services/calendar/utils/practitioner.utils.ts +221 -221
- package/src/services/calendar/utils/synced-calendar.utils.ts +472 -472
- package/src/services/clinic/README.md +204 -204
- package/src/services/clinic/__tests__/clinic-admin.service.test.ts +287 -287
- package/src/services/clinic/__tests__/clinic-group.service.test.ts +352 -352
- package/src/services/clinic/__tests__/clinic.service.test.ts +354 -354
- package/src/services/clinic/billing-transactions.service.ts +217 -217
- package/src/services/clinic/clinic-admin.service.ts +202 -202
- package/src/services/clinic/clinic-group.service.ts +310 -310
- package/src/services/clinic/clinic.service.ts +708 -708
- package/src/services/clinic/index.ts +5 -5
- package/src/services/clinic/practitioner-invite.service.ts +519 -519
- package/src/services/clinic/utils/admin.utils.ts +551 -551
- package/src/services/clinic/utils/clinic-group.utils.ts +646 -646
- package/src/services/clinic/utils/clinic.utils.ts +949 -949
- package/src/services/clinic/utils/filter.utils.d.ts +23 -23
- package/src/services/clinic/utils/filter.utils.ts +446 -446
- package/src/services/clinic/utils/index.ts +11 -11
- package/src/services/clinic/utils/photos.utils.ts +188 -188
- package/src/services/clinic/utils/search.utils.ts +84 -84
- package/src/services/clinic/utils/tag.utils.ts +124 -124
- package/src/services/documentation-templates/documentation-template.service.ts +537 -537
- package/src/services/documentation-templates/filled-document.service.ts +587 -587
- package/src/services/documentation-templates/index.ts +2 -2
- package/src/services/index.ts +13 -13
- package/src/services/media/index.ts +1 -1
- package/src/services/media/media.service.ts +418 -418
- package/src/services/notifications/__tests__/notification.service.test.ts +242 -242
- package/src/services/notifications/index.ts +1 -1
- package/src/services/notifications/notification.service.ts +215 -215
- package/src/services/patient/README.md +48 -48
- package/src/services/patient/To-Do.md +43 -43
- package/src/services/patient/__tests__/patient.service.test.ts +294 -294
- package/src/services/patient/index.ts +2 -2
- package/src/services/patient/patient.service.ts +883 -883
- package/src/services/patient/patientRequirements.service.ts +285 -285
- package/src/services/patient/utils/aesthetic-analysis.utils.ts +176 -176
- package/src/services/patient/utils/clinic.utils.ts +80 -80
- package/src/services/patient/utils/docs.utils.ts +142 -142
- package/src/services/patient/utils/index.ts +9 -9
- package/src/services/patient/utils/location.utils.ts +126 -126
- package/src/services/patient/utils/medical-stuff.utils.ts +143 -143
- package/src/services/patient/utils/medical.utils.ts +458 -458
- package/src/services/patient/utils/practitioner.utils.ts +260 -260
- package/src/services/patient/utils/profile.utils.ts +510 -510
- package/src/services/patient/utils/sensitive.utils.ts +260 -260
- package/src/services/patient/utils/token.utils.ts +211 -211
- package/src/services/practitioner/README.md +145 -145
- package/src/services/practitioner/index.ts +1 -1
- package/src/services/practitioner/practitioner.service.ts +1742 -1742
- package/src/services/procedure/README.md +163 -163
- package/src/services/procedure/index.ts +1 -1
- package/src/services/procedure/procedure.service.ts +1682 -1682
- package/src/services/reviews/index.ts +1 -1
- package/src/services/reviews/reviews.service.ts +636 -683
- package/src/services/user/index.ts +1 -1
- package/src/services/user/user.service.ts +489 -489
- package/src/services/user/user.v2.service.ts +466 -466
- package/src/types/appointment/index.ts +481 -453
- package/src/types/calendar/index.ts +258 -258
- package/src/types/calendar/synced-calendar.types.ts +66 -66
- package/src/types/clinic/index.ts +489 -489
- package/src/types/clinic/practitioner-invite.types.ts +91 -91
- package/src/types/clinic/preferences.types.ts +159 -159
- package/src/types/clinic/to-do +3 -3
- package/src/types/documentation-templates/index.ts +308 -308
- package/src/types/index.ts +44 -44
- package/src/types/notifications/README.md +77 -77
- package/src/types/notifications/index.ts +265 -265
- package/src/types/patient/aesthetic-analysis.types.ts +66 -66
- package/src/types/patient/allergies.ts +58 -58
- package/src/types/patient/index.ts +275 -273
- package/src/types/patient/medical-info.types.ts +152 -152
- package/src/types/patient/patient-requirements.ts +92 -92
- package/src/types/patient/token.types.ts +61 -61
- package/src/types/practitioner/index.ts +206 -206
- package/src/types/procedure/index.ts +181 -181
- package/src/types/profile/index.ts +39 -39
- package/src/types/reviews/index.ts +130 -132
- package/src/types/tz-lookup.d.ts +4 -4
- package/src/types/user/index.ts +38 -38
- package/src/utils/TIMESTAMPS.md +176 -176
- package/src/utils/TimestampUtils.ts +241 -241
- package/src/utils/index.ts +1 -1
- package/src/validations/appointment.schema.ts +574 -574
- package/src/validations/calendar.schema.ts +225 -225
- package/src/validations/clinic.schema.ts +493 -493
- package/src/validations/common.schema.ts +25 -25
- package/src/validations/documentation-templates/index.ts +1 -1
- package/src/validations/documentation-templates/template.schema.ts +220 -220
- package/src/validations/documentation-templates.schema.ts +10 -10
- package/src/validations/index.ts +20 -20
- package/src/validations/media.schema.ts +10 -10
- package/src/validations/notification.schema.ts +90 -90
- package/src/validations/patient/aesthetic-analysis.schema.ts +55 -55
- package/src/validations/patient/medical-info.schema.ts +125 -125
- package/src/validations/patient/patient-requirements.schema.ts +84 -84
- package/src/validations/patient/token.schema.ts +29 -29
- package/src/validations/patient.schema.ts +217 -216
- package/src/validations/practitioner.schema.ts +222 -222
- package/src/validations/procedure-product.schema.ts +41 -41
- package/src/validations/procedure.schema.ts +124 -124
- package/src/validations/profile-info.schema.ts +41 -41
- package/src/validations/reviews.schema.ts +189 -195
- package/src/validations/schemas.ts +104 -104
- package/src/validations/shared.schema.ts +78 -78
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { NotificationType, NotificationStatus } from "../types/notifications";
|
|
3
|
-
import { UserRole } from "../types";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Validaciona šema za baznu notifikaciju
|
|
7
|
-
*/
|
|
8
|
-
export const baseNotificationSchema = z.object({
|
|
9
|
-
id: z.string().optional(),
|
|
10
|
-
userId: z.string(),
|
|
11
|
-
notificationTime: z.any(), // Timestamp
|
|
12
|
-
notificationType: z.nativeEnum(NotificationType),
|
|
13
|
-
notificationTokens: z.array(z.string()),
|
|
14
|
-
status: z.nativeEnum(NotificationStatus),
|
|
15
|
-
createdAt: z.any().optional(), // Timestamp
|
|
16
|
-
updatedAt: z.any().optional(), // Timestamp
|
|
17
|
-
title: z.string(),
|
|
18
|
-
body: z.string(),
|
|
19
|
-
isRead: z.boolean(),
|
|
20
|
-
userRole: z.nativeEnum(UserRole),
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Validaciona šema za pre-requirement notifikaciju
|
|
25
|
-
*/
|
|
26
|
-
export const preRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
27
|
-
notificationType: z.literal(NotificationType.PRE_REQUIREMENT_INSTRUCTION_DUE),
|
|
28
|
-
treatmentId: z.string(),
|
|
29
|
-
requirements: z.array(z.string()),
|
|
30
|
-
deadline: z.any(), // Timestamp
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Validaciona šema za post-requirement notifikaciju
|
|
35
|
-
*/
|
|
36
|
-
export const postRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
37
|
-
notificationType: z.literal(
|
|
38
|
-
NotificationType.POST_REQUIREMENT_INSTRUCTION_DUE
|
|
39
|
-
),
|
|
40
|
-
treatmentId: z.string(),
|
|
41
|
-
requirements: z.array(z.string()),
|
|
42
|
-
deadline: z.any(), // Timestamp
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Validaciona šema za requirement instruction notification
|
|
47
|
-
* Ovo je nova schema koja se odnosi na RequirementInstructionDueNotification
|
|
48
|
-
*/
|
|
49
|
-
export const requirementInstructionDueNotificationSchema =
|
|
50
|
-
baseNotificationSchema.extend({
|
|
51
|
-
notificationType: z.literal(NotificationType.REQUIREMENT_INSTRUCTION_DUE),
|
|
52
|
-
appointmentId: z.string(),
|
|
53
|
-
patientRequirementInstanceId: z.string(),
|
|
54
|
-
instructionId: z.string(),
|
|
55
|
-
originalRequirementId: z.string().optional(),
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Validaciona šema za appointment reminder notifikaciju
|
|
60
|
-
*/
|
|
61
|
-
export const appointmentReminderNotificationSchema =
|
|
62
|
-
baseNotificationSchema.extend({
|
|
63
|
-
notificationType: z.literal(NotificationType.APPOINTMENT_REMINDER),
|
|
64
|
-
appointmentId: z.string(),
|
|
65
|
-
appointmentTime: z.any(), // Timestamp
|
|
66
|
-
treatmentType: z.string(),
|
|
67
|
-
doctorName: z.string(),
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Validaciona šema za appointment notifikaciju
|
|
72
|
-
*/
|
|
73
|
-
export const appointmentNotificationSchema = baseNotificationSchema.extend({
|
|
74
|
-
notificationType: z.literal(NotificationType.APPOINTMENT_STATUS_CHANGE),
|
|
75
|
-
appointmentId: z.string(),
|
|
76
|
-
appointmentStatus: z.string(),
|
|
77
|
-
previousStatus: z.string(),
|
|
78
|
-
reason: z.string().optional(),
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Unija svih validacionih šema za notifikacije
|
|
83
|
-
*/
|
|
84
|
-
export const notificationSchema = z.discriminatedUnion("notificationType", [
|
|
85
|
-
preRequirementNotificationSchema,
|
|
86
|
-
postRequirementNotificationSchema,
|
|
87
|
-
requirementInstructionDueNotificationSchema,
|
|
88
|
-
appointmentReminderNotificationSchema,
|
|
89
|
-
appointmentNotificationSchema,
|
|
90
|
-
]);
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { NotificationType, NotificationStatus } from "../types/notifications";
|
|
3
|
+
import { UserRole } from "../types";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Validaciona šema za baznu notifikaciju
|
|
7
|
+
*/
|
|
8
|
+
export const baseNotificationSchema = z.object({
|
|
9
|
+
id: z.string().optional(),
|
|
10
|
+
userId: z.string(),
|
|
11
|
+
notificationTime: z.any(), // Timestamp
|
|
12
|
+
notificationType: z.nativeEnum(NotificationType),
|
|
13
|
+
notificationTokens: z.array(z.string()),
|
|
14
|
+
status: z.nativeEnum(NotificationStatus),
|
|
15
|
+
createdAt: z.any().optional(), // Timestamp
|
|
16
|
+
updatedAt: z.any().optional(), // Timestamp
|
|
17
|
+
title: z.string(),
|
|
18
|
+
body: z.string(),
|
|
19
|
+
isRead: z.boolean(),
|
|
20
|
+
userRole: z.nativeEnum(UserRole),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Validaciona šema za pre-requirement notifikaciju
|
|
25
|
+
*/
|
|
26
|
+
export const preRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
27
|
+
notificationType: z.literal(NotificationType.PRE_REQUIREMENT_INSTRUCTION_DUE),
|
|
28
|
+
treatmentId: z.string(),
|
|
29
|
+
requirements: z.array(z.string()),
|
|
30
|
+
deadline: z.any(), // Timestamp
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Validaciona šema za post-requirement notifikaciju
|
|
35
|
+
*/
|
|
36
|
+
export const postRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
37
|
+
notificationType: z.literal(
|
|
38
|
+
NotificationType.POST_REQUIREMENT_INSTRUCTION_DUE
|
|
39
|
+
),
|
|
40
|
+
treatmentId: z.string(),
|
|
41
|
+
requirements: z.array(z.string()),
|
|
42
|
+
deadline: z.any(), // Timestamp
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Validaciona šema za requirement instruction notification
|
|
47
|
+
* Ovo je nova schema koja se odnosi na RequirementInstructionDueNotification
|
|
48
|
+
*/
|
|
49
|
+
export const requirementInstructionDueNotificationSchema =
|
|
50
|
+
baseNotificationSchema.extend({
|
|
51
|
+
notificationType: z.literal(NotificationType.REQUIREMENT_INSTRUCTION_DUE),
|
|
52
|
+
appointmentId: z.string(),
|
|
53
|
+
patientRequirementInstanceId: z.string(),
|
|
54
|
+
instructionId: z.string(),
|
|
55
|
+
originalRequirementId: z.string().optional(),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Validaciona šema za appointment reminder notifikaciju
|
|
60
|
+
*/
|
|
61
|
+
export const appointmentReminderNotificationSchema =
|
|
62
|
+
baseNotificationSchema.extend({
|
|
63
|
+
notificationType: z.literal(NotificationType.APPOINTMENT_REMINDER),
|
|
64
|
+
appointmentId: z.string(),
|
|
65
|
+
appointmentTime: z.any(), // Timestamp
|
|
66
|
+
treatmentType: z.string(),
|
|
67
|
+
doctorName: z.string(),
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Validaciona šema za appointment notifikaciju
|
|
72
|
+
*/
|
|
73
|
+
export const appointmentNotificationSchema = baseNotificationSchema.extend({
|
|
74
|
+
notificationType: z.literal(NotificationType.APPOINTMENT_STATUS_CHANGE),
|
|
75
|
+
appointmentId: z.string(),
|
|
76
|
+
appointmentStatus: z.string(),
|
|
77
|
+
previousStatus: z.string(),
|
|
78
|
+
reason: z.string().optional(),
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Unija svih validacionih šema za notifikacije
|
|
83
|
+
*/
|
|
84
|
+
export const notificationSchema = z.discriminatedUnion("notificationType", [
|
|
85
|
+
preRequirementNotificationSchema,
|
|
86
|
+
postRequirementNotificationSchema,
|
|
87
|
+
requirementInstructionDueNotificationSchema,
|
|
88
|
+
appointmentReminderNotificationSchema,
|
|
89
|
+
appointmentNotificationSchema,
|
|
90
|
+
]);
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
export const clinicalFindingDetailSchema = z.object({
|
|
4
|
-
severity: z.string().min(1, 'Severity is required'),
|
|
5
|
-
impact: z.string().min(1, 'Impact is required'),
|
|
6
|
-
notes: z.string().optional(),
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export const clinicalFindingsSchema = z.record(
|
|
10
|
-
z.string(),
|
|
11
|
-
z.record(z.string(), clinicalFindingDetailSchema)
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
export const patientGoalsSchema = z.object({
|
|
15
|
-
timeline: z.string().optional(),
|
|
16
|
-
budget: z.string().optional(),
|
|
17
|
-
naturalness: z.number().min(0).max(100, 'Naturalness must be between 0 and 100'),
|
|
18
|
-
priorities: z.array(z.string()),
|
|
19
|
-
selectedTemplate: z.string().optional(),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const assessmentScalesSchema = z.record(z.string(), z.string());
|
|
23
|
-
|
|
24
|
-
export const createAestheticAnalysisSchema = z.object({
|
|
25
|
-
patientId: z.string().min(1, 'Patient ID is required'),
|
|
26
|
-
appointmentId: z.string().optional(),
|
|
27
|
-
selectedConcerns: z.array(z.string()),
|
|
28
|
-
clinicalFindings: clinicalFindingsSchema,
|
|
29
|
-
patientGoals: patientGoalsSchema,
|
|
30
|
-
assessmentScales: assessmentScalesSchema.optional(),
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
export const updateAestheticAnalysisSchema = z.object({
|
|
34
|
-
appointmentId: z.string().optional(),
|
|
35
|
-
selectedConcerns: z.array(z.string()).optional(),
|
|
36
|
-
clinicalFindings: clinicalFindingsSchema.optional(),
|
|
37
|
-
patientGoals: patientGoalsSchema.partial().optional(),
|
|
38
|
-
assessmentScales: assessmentScalesSchema.optional(),
|
|
39
|
-
}).partial();
|
|
40
|
-
|
|
41
|
-
export const aestheticAnalysisSchema = z.object({
|
|
42
|
-
id: z.string(),
|
|
43
|
-
patientId: z.string(),
|
|
44
|
-
appointmentId: z.string().optional(),
|
|
45
|
-
selectedConcerns: z.array(z.string()),
|
|
46
|
-
clinicalFindings: clinicalFindingsSchema,
|
|
47
|
-
patientGoals: patientGoalsSchema,
|
|
48
|
-
assessmentScales: assessmentScalesSchema,
|
|
49
|
-
completionPercentage: z.number().min(0).max(100),
|
|
50
|
-
status: z.enum(['incomplete', 'ready_for_planning', 'treatment_planned']),
|
|
51
|
-
lastUpdatedBy: z.string(),
|
|
52
|
-
lastUpdatedByRole: z.enum(['PATIENT', 'PRACTITIONER']),
|
|
53
|
-
createdAt: z.any(),
|
|
54
|
-
updatedAt: z.any(),
|
|
55
|
-
});
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const clinicalFindingDetailSchema = z.object({
|
|
4
|
+
severity: z.string().min(1, 'Severity is required'),
|
|
5
|
+
impact: z.string().min(1, 'Impact is required'),
|
|
6
|
+
notes: z.string().optional(),
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export const clinicalFindingsSchema = z.record(
|
|
10
|
+
z.string(),
|
|
11
|
+
z.record(z.string(), clinicalFindingDetailSchema)
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export const patientGoalsSchema = z.object({
|
|
15
|
+
timeline: z.string().optional(),
|
|
16
|
+
budget: z.string().optional(),
|
|
17
|
+
naturalness: z.number().min(0).max(100, 'Naturalness must be between 0 and 100'),
|
|
18
|
+
priorities: z.array(z.string()),
|
|
19
|
+
selectedTemplate: z.string().optional(),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export const assessmentScalesSchema = z.record(z.string(), z.string());
|
|
23
|
+
|
|
24
|
+
export const createAestheticAnalysisSchema = z.object({
|
|
25
|
+
patientId: z.string().min(1, 'Patient ID is required'),
|
|
26
|
+
appointmentId: z.string().optional(),
|
|
27
|
+
selectedConcerns: z.array(z.string()),
|
|
28
|
+
clinicalFindings: clinicalFindingsSchema,
|
|
29
|
+
patientGoals: patientGoalsSchema,
|
|
30
|
+
assessmentScales: assessmentScalesSchema.optional(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const updateAestheticAnalysisSchema = z.object({
|
|
34
|
+
appointmentId: z.string().optional(),
|
|
35
|
+
selectedConcerns: z.array(z.string()).optional(),
|
|
36
|
+
clinicalFindings: clinicalFindingsSchema.optional(),
|
|
37
|
+
patientGoals: patientGoalsSchema.partial().optional(),
|
|
38
|
+
assessmentScales: assessmentScalesSchema.optional(),
|
|
39
|
+
}).partial();
|
|
40
|
+
|
|
41
|
+
export const aestheticAnalysisSchema = z.object({
|
|
42
|
+
id: z.string(),
|
|
43
|
+
patientId: z.string(),
|
|
44
|
+
appointmentId: z.string().optional(),
|
|
45
|
+
selectedConcerns: z.array(z.string()),
|
|
46
|
+
clinicalFindings: clinicalFindingsSchema,
|
|
47
|
+
patientGoals: patientGoalsSchema,
|
|
48
|
+
assessmentScales: assessmentScalesSchema,
|
|
49
|
+
completionPercentage: z.number().min(0).max(100),
|
|
50
|
+
status: z.enum(['incomplete', 'ready_for_planning', 'treatment_planned']),
|
|
51
|
+
lastUpdatedBy: z.string(),
|
|
52
|
+
lastUpdatedByRole: z.enum(['PATIENT', 'PRACTITIONER']),
|
|
53
|
+
createdAt: z.any(),
|
|
54
|
+
updatedAt: z.any(),
|
|
55
|
+
});
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
AllergyType,
|
|
4
|
-
MedicationAllergySubtype,
|
|
5
|
-
FoodAllergySubtype,
|
|
6
|
-
EnvironmentalAllergySubtype,
|
|
7
|
-
CosmeticAllergySubtype,
|
|
8
|
-
} from "../../types/patient/allergies";
|
|
9
|
-
import { BlockingCondition } from "../../backoffice/types/static/blocking-condition.types";
|
|
10
|
-
import { timestampSchema } from "../common.schema";
|
|
11
|
-
|
|
12
|
-
export const allergySubtypeSchema = z.union([
|
|
13
|
-
z.nativeEnum(MedicationAllergySubtype),
|
|
14
|
-
z.nativeEnum(FoodAllergySubtype),
|
|
15
|
-
z.nativeEnum(EnvironmentalAllergySubtype),
|
|
16
|
-
z.nativeEnum(CosmeticAllergySubtype),
|
|
17
|
-
z.literal("other"),
|
|
18
|
-
]);
|
|
19
|
-
|
|
20
|
-
export const allergySchema = z.object({
|
|
21
|
-
type: z.nativeEnum(AllergyType),
|
|
22
|
-
subtype: allergySubtypeSchema,
|
|
23
|
-
name: z.string().optional().nullable(),
|
|
24
|
-
severity: z.enum(["mild", "moderate", "severe"]).optional(),
|
|
25
|
-
reaction: z.string().optional().nullable(),
|
|
26
|
-
diagnosed: timestampSchema.optional().nullable(),
|
|
27
|
-
notes: z.string().optional().nullable(),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export const vitalStatsSchema = z.object({
|
|
31
|
-
height: z.number().positive().optional(),
|
|
32
|
-
weight: z.number().positive().optional(),
|
|
33
|
-
bloodType: z
|
|
34
|
-
.enum(["A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"])
|
|
35
|
-
.optional(),
|
|
36
|
-
bloodPressure: z
|
|
37
|
-
.object({
|
|
38
|
-
systolic: z.number().min(70).max(200),
|
|
39
|
-
diastolic: z.number().min(40).max(130),
|
|
40
|
-
lastMeasured: timestampSchema,
|
|
41
|
-
})
|
|
42
|
-
.optional(),
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
export const blockingConditionSchema = z.object({
|
|
46
|
-
condition: z.nativeEnum(BlockingCondition),
|
|
47
|
-
diagnosedAt: timestampSchema,
|
|
48
|
-
notes: z.string().optional().nullable(),
|
|
49
|
-
isActive: z.boolean(),
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
export const contraindicationDynamicSchema = z.object({
|
|
53
|
-
id: z.string(),
|
|
54
|
-
name: z.string(),
|
|
55
|
-
description: z.string().optional(),
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
export const contraindicationSchema = z.object({
|
|
59
|
-
condition: contraindicationDynamicSchema,
|
|
60
|
-
lastOccurrence: timestampSchema,
|
|
61
|
-
frequency: z.enum(["rare", "occasional", "frequent"]),
|
|
62
|
-
notes: z.string().optional().nullable(),
|
|
63
|
-
isActive: z.boolean(),
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
export const medicationSchema = z.object({
|
|
67
|
-
name: z.string().min(1),
|
|
68
|
-
dosage: z.string().min(1),
|
|
69
|
-
frequency: z.string().min(1),
|
|
70
|
-
startDate: timestampSchema.optional().nullable(),
|
|
71
|
-
endDate: timestampSchema.optional().nullable(),
|
|
72
|
-
prescribedBy: z.string().optional().nullable(),
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
export const patientMedicalInfoSchema = z.object({
|
|
76
|
-
patientId: z.string(),
|
|
77
|
-
vitalStats: vitalStatsSchema,
|
|
78
|
-
blockingConditions: z.array(blockingConditionSchema),
|
|
79
|
-
contraindications: z.array(contraindicationSchema),
|
|
80
|
-
allergies: z.array(allergySchema),
|
|
81
|
-
currentMedications: z.array(medicationSchema),
|
|
82
|
-
emergencyNotes: z.string().optional(),
|
|
83
|
-
lastUpdated: timestampSchema,
|
|
84
|
-
updatedBy: z.string(),
|
|
85
|
-
verifiedBy: z.string().optional(),
|
|
86
|
-
verifiedAt: timestampSchema.optional(),
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
export const createPatientMedicalInfoSchema = patientMedicalInfoSchema.omit({
|
|
90
|
-
patientId: true,
|
|
91
|
-
lastUpdated: true,
|
|
92
|
-
updatedBy: true,
|
|
93
|
-
verifiedBy: true,
|
|
94
|
-
verifiedAt: true,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
export const updatePatientMedicalInfoSchema =
|
|
98
|
-
createPatientMedicalInfoSchema.partial();
|
|
99
|
-
|
|
100
|
-
// Šeme za pojedinačne operacije
|
|
101
|
-
export const updateVitalStatsSchema = vitalStatsSchema;
|
|
102
|
-
|
|
103
|
-
export const addAllergySchema = allergySchema;
|
|
104
|
-
export const updateAllergySchema = allergySchema.partial().extend({
|
|
105
|
-
allergyIndex: z.number().min(0),
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
export const addBlockingConditionSchema = blockingConditionSchema;
|
|
109
|
-
export const updateBlockingConditionSchema = blockingConditionSchema
|
|
110
|
-
.partial()
|
|
111
|
-
.extend({
|
|
112
|
-
conditionIndex: z.number().min(0),
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
export const addContraindicationSchema = contraindicationSchema;
|
|
116
|
-
export const updateContraindicationSchema = contraindicationSchema
|
|
117
|
-
.partial()
|
|
118
|
-
.extend({
|
|
119
|
-
contraindicationIndex: z.number().min(0),
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
export const addMedicationSchema = medicationSchema;
|
|
123
|
-
export const updateMedicationSchema = medicationSchema.partial().extend({
|
|
124
|
-
medicationIndex: z.number().min(0),
|
|
125
|
-
});
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import {
|
|
3
|
+
AllergyType,
|
|
4
|
+
MedicationAllergySubtype,
|
|
5
|
+
FoodAllergySubtype,
|
|
6
|
+
EnvironmentalAllergySubtype,
|
|
7
|
+
CosmeticAllergySubtype,
|
|
8
|
+
} from "../../types/patient/allergies";
|
|
9
|
+
import { BlockingCondition } from "../../backoffice/types/static/blocking-condition.types";
|
|
10
|
+
import { timestampSchema } from "../common.schema";
|
|
11
|
+
|
|
12
|
+
export const allergySubtypeSchema = z.union([
|
|
13
|
+
z.nativeEnum(MedicationAllergySubtype),
|
|
14
|
+
z.nativeEnum(FoodAllergySubtype),
|
|
15
|
+
z.nativeEnum(EnvironmentalAllergySubtype),
|
|
16
|
+
z.nativeEnum(CosmeticAllergySubtype),
|
|
17
|
+
z.literal("other"),
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
export const allergySchema = z.object({
|
|
21
|
+
type: z.nativeEnum(AllergyType),
|
|
22
|
+
subtype: allergySubtypeSchema,
|
|
23
|
+
name: z.string().optional().nullable(),
|
|
24
|
+
severity: z.enum(["mild", "moderate", "severe"]).optional(),
|
|
25
|
+
reaction: z.string().optional().nullable(),
|
|
26
|
+
diagnosed: timestampSchema.optional().nullable(),
|
|
27
|
+
notes: z.string().optional().nullable(),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export const vitalStatsSchema = z.object({
|
|
31
|
+
height: z.number().positive().optional(),
|
|
32
|
+
weight: z.number().positive().optional(),
|
|
33
|
+
bloodType: z
|
|
34
|
+
.enum(["A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"])
|
|
35
|
+
.optional(),
|
|
36
|
+
bloodPressure: z
|
|
37
|
+
.object({
|
|
38
|
+
systolic: z.number().min(70).max(200),
|
|
39
|
+
diastolic: z.number().min(40).max(130),
|
|
40
|
+
lastMeasured: timestampSchema,
|
|
41
|
+
})
|
|
42
|
+
.optional(),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export const blockingConditionSchema = z.object({
|
|
46
|
+
condition: z.nativeEnum(BlockingCondition),
|
|
47
|
+
diagnosedAt: timestampSchema,
|
|
48
|
+
notes: z.string().optional().nullable(),
|
|
49
|
+
isActive: z.boolean(),
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
export const contraindicationDynamicSchema = z.object({
|
|
53
|
+
id: z.string(),
|
|
54
|
+
name: z.string(),
|
|
55
|
+
description: z.string().optional(),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const contraindicationSchema = z.object({
|
|
59
|
+
condition: contraindicationDynamicSchema,
|
|
60
|
+
lastOccurrence: timestampSchema,
|
|
61
|
+
frequency: z.enum(["rare", "occasional", "frequent"]),
|
|
62
|
+
notes: z.string().optional().nullable(),
|
|
63
|
+
isActive: z.boolean(),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export const medicationSchema = z.object({
|
|
67
|
+
name: z.string().min(1),
|
|
68
|
+
dosage: z.string().min(1),
|
|
69
|
+
frequency: z.string().min(1),
|
|
70
|
+
startDate: timestampSchema.optional().nullable(),
|
|
71
|
+
endDate: timestampSchema.optional().nullable(),
|
|
72
|
+
prescribedBy: z.string().optional().nullable(),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
export const patientMedicalInfoSchema = z.object({
|
|
76
|
+
patientId: z.string(),
|
|
77
|
+
vitalStats: vitalStatsSchema,
|
|
78
|
+
blockingConditions: z.array(blockingConditionSchema),
|
|
79
|
+
contraindications: z.array(contraindicationSchema),
|
|
80
|
+
allergies: z.array(allergySchema),
|
|
81
|
+
currentMedications: z.array(medicationSchema),
|
|
82
|
+
emergencyNotes: z.string().optional(),
|
|
83
|
+
lastUpdated: timestampSchema,
|
|
84
|
+
updatedBy: z.string(),
|
|
85
|
+
verifiedBy: z.string().optional(),
|
|
86
|
+
verifiedAt: timestampSchema.optional(),
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
export const createPatientMedicalInfoSchema = patientMedicalInfoSchema.omit({
|
|
90
|
+
patientId: true,
|
|
91
|
+
lastUpdated: true,
|
|
92
|
+
updatedBy: true,
|
|
93
|
+
verifiedBy: true,
|
|
94
|
+
verifiedAt: true,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
export const updatePatientMedicalInfoSchema =
|
|
98
|
+
createPatientMedicalInfoSchema.partial();
|
|
99
|
+
|
|
100
|
+
// Šeme za pojedinačne operacije
|
|
101
|
+
export const updateVitalStatsSchema = vitalStatsSchema;
|
|
102
|
+
|
|
103
|
+
export const addAllergySchema = allergySchema;
|
|
104
|
+
export const updateAllergySchema = allergySchema.partial().extend({
|
|
105
|
+
allergyIndex: z.number().min(0),
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
export const addBlockingConditionSchema = blockingConditionSchema;
|
|
109
|
+
export const updateBlockingConditionSchema = blockingConditionSchema
|
|
110
|
+
.partial()
|
|
111
|
+
.extend({
|
|
112
|
+
conditionIndex: z.number().min(0),
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
export const addContraindicationSchema = contraindicationSchema;
|
|
116
|
+
export const updateContraindicationSchema = contraindicationSchema
|
|
117
|
+
.partial()
|
|
118
|
+
.extend({
|
|
119
|
+
contraindicationIndex: z.number().min(0),
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
export const addMedicationSchema = medicationSchema;
|
|
123
|
+
export const updateMedicationSchema = medicationSchema.partial().extend({
|
|
124
|
+
medicationIndex: z.number().min(0),
|
|
125
|
+
});
|