@blackcode_sa/metaestetics-api 1.15.14 → 1.15.17-staging.0
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 +377 -222
- package/dist/admin/index.d.ts +377 -222
- package/dist/admin/index.js +625 -206
- package/dist/admin/index.mjs +624 -206
- package/dist/backoffice/index.d.mts +24 -0
- package/dist/backoffice/index.d.ts +24 -0
- package/dist/index.d.mts +297 -9
- package/dist/index.d.ts +297 -9
- package/dist/index.js +1144 -632
- package/dist/index.mjs +1139 -619
- package/package.json +2 -1
- package/src/__mocks__/firstore.ts +10 -10
- package/src/admin/aggregation/README.md +79 -79
- package/src/admin/aggregation/appointment/README.md +151 -129
- package/src/admin/aggregation/appointment/appointment.aggregation.service.ts +2137 -2091
- 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 +966 -966
- 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 +689 -689
- package/src/admin/analytics/analytics.admin.service.ts +278 -278
- package/src/admin/analytics/index.ts +2 -2
- package/src/admin/booking/README.md +184 -125
- package/src/admin/booking/booking.admin.ts +1330 -1073
- package/src/admin/booking/booking.calculator.ts +850 -712
- package/src/admin/booking/booking.types.ts +76 -59
- package/src/admin/booking/index.ts +3 -3
- package/src/admin/booking/timezones-problem.md +185 -185
- package/src/admin/calendar/README.md +62 -7
- package/src/admin/calendar/calendar.admin.service.ts +345 -345
- package/src/admin/calendar/index.ts +2 -1
- package/src/admin/calendar/resource-calendar.admin.ts +198 -0
- 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 +83 -83
- package/src/admin/logger/index.ts +78 -78
- package/src/admin/mailing/README.md +139 -139
- package/src/admin/mailing/appointment/appointment.mailing.service.ts +1253 -1253
- 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/clinicWelcome/clinicWelcome.mailing.ts +292 -292
- package/src/admin/mailing/clinicWelcome/index.ts +1 -1
- package/src/admin/mailing/clinicWelcome/templates/welcome.template.ts +225 -225
- package/src/admin/mailing/index.ts +5 -5
- package/src/admin/mailing/patientInvite/index.ts +2 -2
- package/src/admin/mailing/patientInvite/patientInvite.mailing.ts +415 -415
- package/src/admin/mailing/patientInvite/templates/invitation.template.ts +105 -105
- 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 +818 -818
- 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 +57 -57
- package/src/backoffice/services/analytics.service.proposal.md +863 -863
- package/src/backoffice/services/analytics.service.summary.md +143 -143
- package/src/backoffice/services/brand.service.ts +260 -260
- package/src/backoffice/services/category.service.ts +384 -384
- 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 +10 -10
- package/src/backoffice/services/migrate-products.ts +116 -116
- package/src/backoffice/services/product.service.ts +557 -557
- package/src/backoffice/services/requirement.service.ts +235 -235
- package/src/backoffice/services/subcategory.service.ts +461 -461
- package/src/backoffice/services/technology.service.ts +1153 -1153
- 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 +67 -67
- 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 +239 -239
- 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 +168 -168
- package/src/backoffice/validations/index.ts +1 -1
- package/src/backoffice/validations/schemas.ts +164 -164
- package/src/config/__mocks__/firebase.ts +99 -99
- package/src/config/firebase.ts +78 -78
- package/src/config/index.ts +17 -17
- package/src/config/tiers.config.ts +255 -229
- package/src/errors/auth.error.ts +6 -6
- package/src/errors/auth.errors.ts +211 -211
- 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 +298 -298
- package/src/services/__tests__/auth.service.test.ts +310 -310
- package/src/services/__tests__/base.service.test.ts +36 -36
- package/src/services/__tests__/user.service.test.ts +530 -530
- package/src/services/analytics/ARCHITECTURE.md +199 -199
- package/src/services/analytics/CLOUD_FUNCTIONS.md +225 -225
- package/src/services/analytics/GROUPED_ANALYTICS.md +501 -501
- package/src/services/analytics/QUICK_START.md +393 -393
- package/src/services/analytics/README.md +304 -304
- package/src/services/analytics/SUMMARY.md +141 -141
- package/src/services/analytics/TRENDS.md +380 -380
- package/src/services/analytics/USAGE_GUIDE.md +518 -518
- package/src/services/analytics/analytics-cloud.service.ts +222 -222
- package/src/services/analytics/analytics.service.ts +2148 -2148
- package/src/services/analytics/index.ts +4 -4
- package/src/services/analytics/review-analytics.service.ts +941 -941
- package/src/services/analytics/utils/appointment-filtering.utils.ts +138 -138
- package/src/services/analytics/utils/cost-calculation.utils.ts +182 -182
- package/src/services/analytics/utils/grouping.utils.ts +434 -434
- package/src/services/analytics/utils/stored-analytics.utils.ts +347 -347
- package/src/services/analytics/utils/time-calculation.utils.ts +186 -186
- package/src/services/analytics/utils/trend-calculation.utils.ts +200 -200
- package/src/services/appointment/README.md +17 -17
- package/src/services/appointment/appointment.service.ts +2943 -2941
- package/src/services/appointment/index.ts +1 -1
- package/src/services/appointment/utils/appointment.utils.ts +620 -620
- package/src/services/appointment/utils/extended-procedure.utils.ts +354 -354
- package/src/services/appointment/utils/form-initialization.utils.ts +516 -516
- package/src/services/appointment/utils/recommended-procedure.utils.ts +195 -195
- package/src/services/appointment/utils/zone-management.utils.ts +468 -468
- package/src/services/appointment/utils/zone-photo.utils.ts +302 -302
- package/src/services/auth/auth.service.ts +1435 -1435
- 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 +1693 -1693
- 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 +676 -676
- 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 +265 -265
- package/src/services/clinic/__tests__/clinic-group.service.test.ts +222 -222
- package/src/services/clinic/__tests__/clinic.service.test.ts +302 -302
- 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 +720 -720
- 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 +1023 -1023
- package/src/services/clinic/utils/filter.utils.d.ts +23 -23
- package/src/services/clinic/utils/filter.utils.ts +462 -462
- package/src/services/clinic/utils/index.ts +10 -10
- package/src/services/clinic/utils/photos.utils.ts +188 -188
- package/src/services/clinic/utils/search.utils.ts +83 -83
- 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 +597 -597
- package/src/services/documentation-templates/index.ts +2 -2
- package/src/services/index.ts +16 -15
- 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 +286 -286
- package/src/services/patient/index.ts +2 -2
- package/src/services/patient/patient.service.ts +1021 -1021
- package/src/services/patient/patientRequirements.service.ts +309 -309
- package/src/services/patient/utils/aesthetic-analysis.utils.ts +176 -176
- package/src/services/patient/utils/body-assessment.utils.ts +159 -159
- package/src/services/patient/utils/clinic.utils.ts +159 -159
- package/src/services/patient/utils/docs.utils.ts +142 -142
- package/src/services/patient/utils/hair-scalp-assessment.utils.ts +158 -158
- 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/pre-surgical-assessment.utils.ts +161 -161
- 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/skin-quality-assessment.utils.ts +160 -160
- 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 +2355 -2354
- package/src/services/procedure/README.md +163 -163
- package/src/services/procedure/index.ts +1 -1
- package/src/services/procedure/procedure.service.ts +2521 -2521
- package/src/services/resource/README.md +119 -0
- package/src/services/resource/index.ts +1 -0
- package/src/services/resource/resource.service.ts +555 -0
- package/src/services/reviews/index.ts +1 -1
- package/src/services/reviews/reviews.service.ts +745 -745
- package/src/services/tier-enforcement.ts +240 -240
- package/src/services/user/index.ts +1 -1
- package/src/services/user/user.service.ts +533 -533
- package/src/services/user/user.v2.service.ts +467 -467
- package/src/types/analytics/analytics.types.ts +597 -597
- package/src/types/analytics/grouped-analytics.types.ts +173 -173
- package/src/types/analytics/index.ts +4 -4
- package/src/types/analytics/stored-analytics.types.ts +137 -137
- package/src/types/appointment/index.ts +524 -517
- package/src/types/calendar/index.ts +261 -260
- package/src/types/calendar/synced-calendar.types.ts +66 -66
- package/src/types/clinic/index.ts +530 -529
- package/src/types/clinic/practitioner-invite.types.ts +91 -91
- package/src/types/clinic/preferences.types.ts +159 -159
- package/src/types/clinic/rbac.types.ts +64 -63
- package/src/types/clinic/to-do +3 -3
- package/src/types/documentation-templates/index.ts +308 -308
- package/src/types/index.ts +50 -47
- package/src/types/notifications/README.md +77 -77
- package/src/types/notifications/index.ts +300 -300
- package/src/types/patient/aesthetic-analysis.types.ts +66 -66
- package/src/types/patient/allergies.ts +58 -58
- package/src/types/patient/body-assessment.types.ts +93 -93
- package/src/types/patient/hair-scalp-assessment.types.ts +98 -98
- package/src/types/patient/index.ts +279 -279
- package/src/types/patient/medical-info.types.ts +152 -152
- package/src/types/patient/patient-requirements.ts +92 -92
- package/src/types/patient/pre-surgical-assessment.types.ts +95 -95
- package/src/types/patient/skin-quality-assessment.types.ts +105 -105
- package/src/types/patient/token.types.ts +61 -61
- package/src/types/practitioner/index.ts +208 -208
- package/src/types/procedure/index.ts +189 -183
- package/src/types/profile/index.ts +39 -39
- package/src/types/resource/README.md +153 -0
- package/src/types/resource/index.ts +199 -0
- package/src/types/reviews/index.ts +132 -132
- package/src/types/tz-lookup.d.ts +4 -4
- package/src/types/user/index.ts +60 -60
- package/src/utils/TIMESTAMPS.md +176 -176
- package/src/utils/TimestampUtils.ts +241 -241
- package/src/utils/index.ts +1 -1
- package/src/validations/README.md +94 -0
- package/src/validations/appointment.schema.ts +589 -589
- package/src/validations/calendar.schema.ts +225 -225
- package/src/validations/clinic.schema.ts +494 -494
- 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 +21 -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/body-assessment.schema.ts +82 -82
- package/src/validations/patient/hair-scalp-assessment.schema.ts +70 -70
- package/src/validations/patient/medical-info.schema.ts +177 -177
- package/src/validations/patient/patient-requirements.schema.ts +84 -84
- package/src/validations/patient/pre-surgical-assessment.schema.ts +78 -78
- package/src/validations/patient/skin-quality-assessment.schema.ts +70 -70
- package/src/validations/patient/token.schema.ts +29 -29
- package/src/validations/patient.schema.ts +217 -217
- package/src/validations/practitioner.schema.ts +224 -224
- package/src/validations/procedure-product.schema.ts +41 -41
- package/src/validations/procedure.schema.ts +136 -124
- package/src/validations/profile-info.schema.ts +41 -41
- package/src/validations/resource.schema.ts +57 -0
- package/src/validations/reviews.schema.ts +195 -195
- package/src/validations/schemas.ts +109 -109
- package/src/validations/shared.schema.ts +78 -78
|
@@ -1,183 +1,189 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BlockingCondition,
|
|
3
|
-
CertificationRequirement,
|
|
4
|
-
ProcedureFamily,
|
|
5
|
-
} from "../../backoffice/types";
|
|
6
|
-
import {
|
|
7
|
-
ContraindicationDynamic,
|
|
8
|
-
TreatmentBenefitDynamic,
|
|
9
|
-
} from "../../backoffice/types/admin-constants.types";
|
|
10
|
-
import { Requirement } from "../../backoffice/types/requirement.types";
|
|
11
|
-
import { Category } from "../../backoffice/types/category.types";
|
|
12
|
-
import { Subcategory } from "../../backoffice/types/subcategory.types";
|
|
13
|
-
import { Technology } from "../../backoffice/types/technology.types";
|
|
14
|
-
import { Product } from "../../backoffice/types/product.types";
|
|
15
|
-
import { ClinicInfo, DoctorInfo } from "../../types/";
|
|
16
|
-
import { ProcedureReviewInfo } from "../reviews";
|
|
17
|
-
import { TechnologyDocumentationTemplate } from "../../backoffice/types/technology.types";
|
|
18
|
-
import {
|
|
19
|
-
PricingMeasure,
|
|
20
|
-
Currency,
|
|
21
|
-
} from "../../backoffice/types/static/pricing.types";
|
|
22
|
-
import { MediaResource } from "../../services/media/media.service";
|
|
23
|
-
import type { ProcedureProduct } from "../../backoffice/types/procedure-product.types";
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
description
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
product
|
|
50
|
-
|
|
51
|
-
price
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
*
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
1
|
+
import {
|
|
2
|
+
BlockingCondition,
|
|
3
|
+
CertificationRequirement,
|
|
4
|
+
ProcedureFamily,
|
|
5
|
+
} from "../../backoffice/types";
|
|
6
|
+
import {
|
|
7
|
+
ContraindicationDynamic,
|
|
8
|
+
TreatmentBenefitDynamic,
|
|
9
|
+
} from "../../backoffice/types/admin-constants.types";
|
|
10
|
+
import { Requirement } from "../../backoffice/types/requirement.types";
|
|
11
|
+
import { Category } from "../../backoffice/types/category.types";
|
|
12
|
+
import { Subcategory } from "../../backoffice/types/subcategory.types";
|
|
13
|
+
import { Technology } from "../../backoffice/types/technology.types";
|
|
14
|
+
import { Product } from "../../backoffice/types/product.types";
|
|
15
|
+
import { ClinicInfo, DoctorInfo } from "../../types/";
|
|
16
|
+
import { ProcedureReviewInfo } from "../reviews";
|
|
17
|
+
import { TechnologyDocumentationTemplate } from "../../backoffice/types/technology.types";
|
|
18
|
+
import {
|
|
19
|
+
PricingMeasure,
|
|
20
|
+
Currency,
|
|
21
|
+
} from "../../backoffice/types/static/pricing.types";
|
|
22
|
+
import { MediaResource } from "../../services/media/media.service";
|
|
23
|
+
import type { ProcedureProduct } from "../../backoffice/types/procedure-product.types";
|
|
24
|
+
import type { ResourceRequirement } from "../resource";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Procedure represents a specific medical procedure that can be performed by a practitioner in a clinic
|
|
28
|
+
* It inherits properties from technology and adds clinic/practitioner specific details
|
|
29
|
+
*/
|
|
30
|
+
export interface Procedure {
|
|
31
|
+
/** Unique identifier of the procedure */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Name of the procedure */
|
|
34
|
+
name: string;
|
|
35
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
36
|
+
nameLower: string;
|
|
37
|
+
/** Photos of the procedure */
|
|
38
|
+
photos?: MediaResource[];
|
|
39
|
+
/** Detailed description of the procedure */
|
|
40
|
+
description: string;
|
|
41
|
+
/** Family of procedures this belongs to (aesthetics/surgery) */
|
|
42
|
+
family: ProcedureFamily;
|
|
43
|
+
/** Category this procedure belongs to */
|
|
44
|
+
category: Category;
|
|
45
|
+
/** Subcategory this procedure belongs to */
|
|
46
|
+
subcategory: Subcategory;
|
|
47
|
+
/** Technology used in this procedure */
|
|
48
|
+
technology: Technology;
|
|
49
|
+
/** Default product used in this procedure (optional for consultations) */
|
|
50
|
+
product?: Product;
|
|
51
|
+
/** Default price of the procedure */
|
|
52
|
+
price: number;
|
|
53
|
+
/** Currency for the price */
|
|
54
|
+
currency: Currency;
|
|
55
|
+
/** How the price is measured (per ml, per zone, etc.) - for default product*/
|
|
56
|
+
pricingMeasure: PricingMeasure;
|
|
57
|
+
/** Duration of the procedure in minutes */
|
|
58
|
+
productsMetadata?: ProcedureProduct[];
|
|
59
|
+
duration: number;
|
|
60
|
+
/** Blocking conditions that prevent this procedure */
|
|
61
|
+
blockingConditions: BlockingCondition[];
|
|
62
|
+
/** Treatment benefits of this procedure */
|
|
63
|
+
treatmentBenefits: TreatmentBenefitDynamic[];
|
|
64
|
+
/** A list of just the string IDs of the treatment benefits, for efficient querying. */
|
|
65
|
+
treatmentBenefitIds: string[];
|
|
66
|
+
/** Contraindications of this procedure */
|
|
67
|
+
contraindications: ContraindicationDynamic[];
|
|
68
|
+
/** A list of just the string IDs of the contraindications, for efficient querying. */
|
|
69
|
+
contraindicationIds: string[];
|
|
70
|
+
/** Pre-procedure requirements */
|
|
71
|
+
preRequirements: Requirement[];
|
|
72
|
+
/** Post-procedure requirements */
|
|
73
|
+
postRequirements: Requirement[];
|
|
74
|
+
/** Certification requirements for performing this procedure */
|
|
75
|
+
certificationRequirement: CertificationRequirement;
|
|
76
|
+
/** Documentation templates required for this procedure */
|
|
77
|
+
documentationTemplates: TechnologyDocumentationTemplate[];
|
|
78
|
+
/** ID of the practitioner who performs this procedure */
|
|
79
|
+
practitionerId: string;
|
|
80
|
+
/** ID of the clinic branch where this procedure is performed */
|
|
81
|
+
clinicBranchId: string;
|
|
82
|
+
/** Aggregated clinic information */
|
|
83
|
+
clinicInfo: ClinicInfo;
|
|
84
|
+
/** Aggregated doctor information */
|
|
85
|
+
doctorInfo: DoctorInfo;
|
|
86
|
+
/** Aggregated review information for this procedure */
|
|
87
|
+
reviewInfo: ProcedureReviewInfo;
|
|
88
|
+
/** Optional resources required for this procedure (e.g., surgery room, device) */
|
|
89
|
+
resourceRequirements?: ResourceRequirement[];
|
|
90
|
+
/** Whether this procedure is active */
|
|
91
|
+
isActive: boolean;
|
|
92
|
+
/** When this procedure was created */
|
|
93
|
+
createdAt: Date;
|
|
94
|
+
/** When this procedure was last updated */
|
|
95
|
+
updatedAt: Date;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Data required to create a new procedure
|
|
100
|
+
*/
|
|
101
|
+
export interface CreateProcedureData {
|
|
102
|
+
name: string;
|
|
103
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
104
|
+
nameLower: string;
|
|
105
|
+
description: string;
|
|
106
|
+
family: ProcedureFamily;
|
|
107
|
+
categoryId: string;
|
|
108
|
+
subcategoryId: string;
|
|
109
|
+
technologyId: string;
|
|
110
|
+
productId?: string;
|
|
111
|
+
price: number;
|
|
112
|
+
productsMetadata?: {
|
|
113
|
+
productId: string;
|
|
114
|
+
price: number;
|
|
115
|
+
currency: Currency;
|
|
116
|
+
pricingMeasure: PricingMeasure;
|
|
117
|
+
isDefault?: boolean;
|
|
118
|
+
}[];
|
|
119
|
+
currency: Currency;
|
|
120
|
+
pricingMeasure: PricingMeasure;
|
|
121
|
+
duration: number;
|
|
122
|
+
practitionerId: string;
|
|
123
|
+
clinicBranchId: string;
|
|
124
|
+
photos?: MediaResource[];
|
|
125
|
+
resourceRequirements?: ResourceRequirement[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Data that can be updated for an existing procedure
|
|
130
|
+
*/
|
|
131
|
+
export interface UpdateProcedureData {
|
|
132
|
+
name?: string;
|
|
133
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
134
|
+
nameLower?: string;
|
|
135
|
+
description?: string;
|
|
136
|
+
price?: number;
|
|
137
|
+
currency?: Currency;
|
|
138
|
+
pricingMeasure?: PricingMeasure;
|
|
139
|
+
productsMetadata?: {
|
|
140
|
+
productId: string;
|
|
141
|
+
price: number;
|
|
142
|
+
currency: Currency;
|
|
143
|
+
pricingMeasure: PricingMeasure;
|
|
144
|
+
isDefault?: boolean;
|
|
145
|
+
}[];
|
|
146
|
+
duration?: number;
|
|
147
|
+
isActive?: boolean;
|
|
148
|
+
practitionerId?: string;
|
|
149
|
+
categoryId?: string;
|
|
150
|
+
subcategoryId?: string;
|
|
151
|
+
technologyId?: string;
|
|
152
|
+
productId?: string;
|
|
153
|
+
clinicBranchId?: string;
|
|
154
|
+
photos?: MediaResource[];
|
|
155
|
+
resourceRequirements?: ResourceRequirement[];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Collection name for procedures in Firestore
|
|
160
|
+
*/
|
|
161
|
+
export const PROCEDURES_COLLECTION = "procedures";
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Aggregated summary information for a procedure.
|
|
165
|
+
* Used in arrays within Clinic and Practitioner documents for quick display.
|
|
166
|
+
*/
|
|
167
|
+
export interface ProcedureSummaryInfo {
|
|
168
|
+
id: string;
|
|
169
|
+
name: string;
|
|
170
|
+
description?: string;
|
|
171
|
+
photo?: string; // Still using empty string if no source found
|
|
172
|
+
family: ProcedureFamily;
|
|
173
|
+
categoryName: string; // Use names for aggregation
|
|
174
|
+
subcategoryName: string; // Use names for aggregation
|
|
175
|
+
technologyName: string; // Use names for aggregation
|
|
176
|
+
brandName?: string; // Added: Name of the brand used (if applicable)
|
|
177
|
+
productName?: string; // Added: Name of the product used (if applicable)
|
|
178
|
+
price: number;
|
|
179
|
+
priceMin?: number;
|
|
180
|
+
priceMax?: number;
|
|
181
|
+
pricingMeasure: PricingMeasure;
|
|
182
|
+
currency: Currency;
|
|
183
|
+
duration: number;
|
|
184
|
+
clinicId: string;
|
|
185
|
+
clinicName: string;
|
|
186
|
+
practitionerId: string;
|
|
187
|
+
practitionerName: string;
|
|
188
|
+
resourceRequirements?: ResourceRequirement[];
|
|
189
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { Timestamp } from "firebase-admin/firestore";
|
|
2
|
-
import { ClinicLocation, ClinicContactInfo } from "../clinic";
|
|
3
|
-
import { PractitionerCertification } from "../practitioner";
|
|
4
|
-
import { Gender } from "../patient";
|
|
5
|
-
/**
|
|
6
|
-
* Interface for clinic profile information
|
|
7
|
-
*/
|
|
8
|
-
export interface ClinicInfo {
|
|
9
|
-
id: string;
|
|
10
|
-
featuredPhoto: string;
|
|
11
|
-
name: string;
|
|
12
|
-
description?: string | null;
|
|
13
|
-
location: ClinicLocation;
|
|
14
|
-
contactInfo: ClinicContactInfo;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Interface for practitioner profile information
|
|
19
|
-
*/
|
|
20
|
-
export interface PractitionerProfileInfo {
|
|
21
|
-
id: string;
|
|
22
|
-
practitionerPhoto: string | null;
|
|
23
|
-
name: string;
|
|
24
|
-
email: string;
|
|
25
|
-
phone: string | null;
|
|
26
|
-
certification: PractitionerCertification;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Interface for patient profile information
|
|
31
|
-
*/
|
|
32
|
-
export interface PatientProfileInfo {
|
|
33
|
-
id: string;
|
|
34
|
-
fullName: string;
|
|
35
|
-
email: string;
|
|
36
|
-
phone: string | null;
|
|
37
|
-
dateOfBirth: Timestamp;
|
|
38
|
-
gender: Gender;
|
|
39
|
-
}
|
|
1
|
+
import { Timestamp } from "firebase-admin/firestore";
|
|
2
|
+
import { ClinicLocation, ClinicContactInfo } from "../clinic";
|
|
3
|
+
import { PractitionerCertification } from "../practitioner";
|
|
4
|
+
import { Gender } from "../patient";
|
|
5
|
+
/**
|
|
6
|
+
* Interface for clinic profile information
|
|
7
|
+
*/
|
|
8
|
+
export interface ClinicInfo {
|
|
9
|
+
id: string;
|
|
10
|
+
featuredPhoto: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string | null;
|
|
13
|
+
location: ClinicLocation;
|
|
14
|
+
contactInfo: ClinicContactInfo;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Interface for practitioner profile information
|
|
19
|
+
*/
|
|
20
|
+
export interface PractitionerProfileInfo {
|
|
21
|
+
id: string;
|
|
22
|
+
practitionerPhoto: string | null;
|
|
23
|
+
name: string;
|
|
24
|
+
email: string;
|
|
25
|
+
phone: string | null;
|
|
26
|
+
certification: PractitionerCertification;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Interface for patient profile information
|
|
31
|
+
*/
|
|
32
|
+
export interface PatientProfileInfo {
|
|
33
|
+
id: string;
|
|
34
|
+
fullName: string;
|
|
35
|
+
email: string;
|
|
36
|
+
phone: string | null;
|
|
37
|
+
dateOfBirth: Timestamp;
|
|
38
|
+
gender: Gender;
|
|
39
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Resource Types (`Api/src/types/resource/`)
|
|
2
|
+
|
|
3
|
+
Type definitions for the Clinic Resources system. These types are used across the API package, Cloud Functions, and the ClinicApp frontend (via the `@blackcode_sa/metaestetics-api` package).
|
|
4
|
+
|
|
5
|
+
## File: `index.ts`
|
|
6
|
+
|
|
7
|
+
### Collection Constants
|
|
8
|
+
|
|
9
|
+
| Constant | Value | Description |
|
|
10
|
+
|----------|-------|-------------|
|
|
11
|
+
| `RESOURCES_COLLECTION` | `"resources"` | Subcollection under clinics |
|
|
12
|
+
| `RESOURCE_INSTANCES_SUBCOLLECTION` | `"instances"` | Subcollection under resources |
|
|
13
|
+
| `RESOURCE_CALENDAR_SUBCOLLECTION` | `"calendar"` | Subcollection under instances |
|
|
14
|
+
|
|
15
|
+
### Firestore Path
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
clinics/{clinicId}/resources/{resourceId}
|
|
19
|
+
clinics/{clinicId}/resources/{resourceId}/instances/{instanceId}
|
|
20
|
+
clinics/{clinicId}/resources/{resourceId}/instances/{instanceId}/calendar/{eventId}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Enums
|
|
24
|
+
|
|
25
|
+
#### `ResourceCategory`
|
|
26
|
+
Categorizes the type of physical resource.
|
|
27
|
+
|
|
28
|
+
| Value | Description |
|
|
29
|
+
|-------|-------------|
|
|
30
|
+
| `MEDICAL_DEVICE` | Medical equipment (e.g., laser machine) |
|
|
31
|
+
| `ROOM` | General room (e.g., consultation room) |
|
|
32
|
+
| `SURGERY_SUITE` | Operating/surgery room |
|
|
33
|
+
| `EQUIPMENT` | General equipment |
|
|
34
|
+
| `OTHER` | Uncategorized |
|
|
35
|
+
|
|
36
|
+
#### `ResourceStatus`
|
|
37
|
+
Tracks the operational state of a resource or instance.
|
|
38
|
+
|
|
39
|
+
| Value | Description |
|
|
40
|
+
|-------|-------------|
|
|
41
|
+
| `ACTIVE` | Available for booking |
|
|
42
|
+
| `INACTIVE` | Soft-deleted or disabled |
|
|
43
|
+
| `MAINTENANCE` | Temporarily unavailable |
|
|
44
|
+
|
|
45
|
+
### Interfaces
|
|
46
|
+
|
|
47
|
+
#### `Resource`
|
|
48
|
+
The main resource definition owned by a clinic branch.
|
|
49
|
+
|
|
50
|
+
| Field | Type | Description |
|
|
51
|
+
|-------|------|-------------|
|
|
52
|
+
| `id` | `string` | Unique identifier |
|
|
53
|
+
| `clinicBranchId` | `string` | Owning clinic branch |
|
|
54
|
+
| `name` | `string` | Display name |
|
|
55
|
+
| `nameLower` | `string` | Lowercase for case-insensitive search |
|
|
56
|
+
| `category` | `ResourceCategory` | Type of resource |
|
|
57
|
+
| `description` | `string?` | Optional description |
|
|
58
|
+
| `quantity` | `number` | Number of physical instances |
|
|
59
|
+
| `status` | `ResourceStatus` | Current status |
|
|
60
|
+
| `linkedProcedureIds` | `string[]` | Procedures requiring this resource |
|
|
61
|
+
| `createdAt` | `Timestamp` | Creation timestamp |
|
|
62
|
+
| `updatedAt` | `Timestamp` | Last update timestamp |
|
|
63
|
+
|
|
64
|
+
#### `ResourceInstance`
|
|
65
|
+
A single physical unit of a resource. Each instance has its own calendar.
|
|
66
|
+
|
|
67
|
+
| Field | Type | Description |
|
|
68
|
+
|-------|------|-------------|
|
|
69
|
+
| `id` | `string` | Unique identifier |
|
|
70
|
+
| `resourceId` | `string` | Parent resource ID |
|
|
71
|
+
| `clinicBranchId` | `string` | Owning clinic branch |
|
|
72
|
+
| `label` | `string` | Auto-generated: `"{Resource.name} #{index}"` |
|
|
73
|
+
| `index` | `number` | 1-based index |
|
|
74
|
+
| `status` | `ResourceStatus` | Current status |
|
|
75
|
+
| `createdAt` / `updatedAt` | `Timestamp` | Timestamps |
|
|
76
|
+
|
|
77
|
+
#### `ResourceCalendarEvent`
|
|
78
|
+
A calendar event on a resource instance. Can be a booking event (auto-created during appointment creation) or a blocking event (manually created by admin for maintenance/downtime).
|
|
79
|
+
|
|
80
|
+
| Field | Type | Description |
|
|
81
|
+
|-------|------|-------------|
|
|
82
|
+
| `id` | `string` | Unique identifier |
|
|
83
|
+
| `resourceId` | `string` | Parent resource |
|
|
84
|
+
| `resourceInstanceId` | `string` | Specific instance |
|
|
85
|
+
| `clinicBranchId` | `string` | Clinic branch |
|
|
86
|
+
| `eventType` | `CalendarEventType` | `RESOURCE_BOOKING` for bookings, `BLOCKING` for manual blocks |
|
|
87
|
+
| `appointmentId` | `string?` | Linked appointment (only for booking events) |
|
|
88
|
+
| `procedureId` | `string?` | Procedure requiring this resource (only for booking events) |
|
|
89
|
+
| `practitionerId` | `string?` | Practitioner performing procedure (only for booking events) |
|
|
90
|
+
| `patientId` | `string?` | Patient for the appointment (only for booking events) |
|
|
91
|
+
| `eventTime` | `CalendarEventTime` | Start and end times |
|
|
92
|
+
| `status` | `CalendarEventStatus` | `CONFIRMED` for blocking events, mirrors appointment status for bookings |
|
|
93
|
+
| `eventName` | `string` | Display name |
|
|
94
|
+
| `description` | `string?` | Optional description (primarily for blocking events) |
|
|
95
|
+
| `createdAt` / `updatedAt` | `Timestamp` | Timestamps |
|
|
96
|
+
|
|
97
|
+
#### `ResourceRequirement`
|
|
98
|
+
Lightweight reference stored on procedures.
|
|
99
|
+
|
|
100
|
+
| Field | Type | Description |
|
|
101
|
+
|-------|------|-------------|
|
|
102
|
+
| `resourceId` | `string` | ID of the required resource |
|
|
103
|
+
| `resourceName` | `string` | Snapshot of resource name |
|
|
104
|
+
| `resourceCategory` | `ResourceCategory` | Snapshot of category |
|
|
105
|
+
|
|
106
|
+
#### `ResourceBookingInfo`
|
|
107
|
+
Stored on the appointment after resource allocation.
|
|
108
|
+
|
|
109
|
+
| Field | Type | Description |
|
|
110
|
+
|-------|------|-------------|
|
|
111
|
+
| `resourceId` | `string` | Booked resource |
|
|
112
|
+
| `resourceName` | `string` | Resource name snapshot |
|
|
113
|
+
| `resourceInstanceId` | `string` | Allocated instance |
|
|
114
|
+
| `resourceInstanceLabel` | `string` | Instance label (e.g., "Room #2") |
|
|
115
|
+
| `calendarEventId` | `string` | Calendar event on instance |
|
|
116
|
+
|
|
117
|
+
#### `CreateResourceData` / `UpdateResourceData`
|
|
118
|
+
Input types for resource CRUD operations. See source for field details.
|
|
119
|
+
|
|
120
|
+
#### `CreateResourceBlockingEventParams`
|
|
121
|
+
Parameters for creating a blocking event on a resource instance.
|
|
122
|
+
|
|
123
|
+
| Field | Type | Description |
|
|
124
|
+
|-------|------|-------------|
|
|
125
|
+
| `clinicBranchId` | `string` | Clinic branch |
|
|
126
|
+
| `resourceId` | `string` | Parent resource |
|
|
127
|
+
| `resourceInstanceId` | `string` | Target instance |
|
|
128
|
+
| `eventName` | `string` | Display name (e.g., "Maintenance") |
|
|
129
|
+
| `eventTime` | `CalendarEventTime` | Block start and end times |
|
|
130
|
+
| `description` | `string?` | Optional reason for the block |
|
|
131
|
+
|
|
132
|
+
#### `UpdateResourceBlockingEventParams`
|
|
133
|
+
Parameters for updating an existing blocking event. Only provided fields are updated.
|
|
134
|
+
|
|
135
|
+
| Field | Type | Description |
|
|
136
|
+
|-------|------|-------------|
|
|
137
|
+
| `clinicBranchId` | `string` | Clinic branch |
|
|
138
|
+
| `resourceId` | `string` | Parent resource |
|
|
139
|
+
| `resourceInstanceId` | `string` | Target instance |
|
|
140
|
+
| `eventId` | `string` | ID of the event to update |
|
|
141
|
+
| `eventName` | `string?` | New display name |
|
|
142
|
+
| `eventTime` | `CalendarEventTime?` | New time range |
|
|
143
|
+
| `description` | `string?` | New description |
|
|
144
|
+
|
|
145
|
+
### Related Type Extensions
|
|
146
|
+
|
|
147
|
+
This system also extends existing types:
|
|
148
|
+
|
|
149
|
+
- **`Procedure`** (`types/procedure/index.ts`): Added optional `resourceRequirements?: ResourceRequirement[]`
|
|
150
|
+
- **`Appointment`** (`types/appointment/index.ts`): Added optional `resourceBookings?: ResourceBookingInfo[]`
|
|
151
|
+
- **`CalendarEventType`** (`types/calendar/index.ts`): Added `RESOURCE_BOOKING = "resource_booking"`
|
|
152
|
+
|
|
153
|
+
See [main Resource System README](../../../docs/RESOURCE_SYSTEM.md) for the full system overview.
|