@blackcode_sa/metaestetics-api 1.13.5 → 1.13.6
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 +20 -1
- package/dist/admin/index.d.ts +20 -1
- package/dist/admin/index.js +217 -1
- package/dist/admin/index.mjs +217 -1
- package/package.json +121 -121
- 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 +1984 -1984
- 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 -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 +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 +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 +81 -81
- 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 +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 +256 -256
- 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 +553 -553
- 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 +1151 -1151
- 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 +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 +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 +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/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 +2142 -2142
- 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 +2558 -2558
- 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 +14 -14
- 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 +2200 -2200
- package/src/services/reviews/index.ts +1 -1
- package/src/services/reviews/reviews.service.ts +734 -734
- 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/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 +480 -480
- package/src/types/calendar/index.ts +258 -258
- package/src/types/calendar/synced-calendar.types.ts +66 -66
- package/src/types/clinic/index.ts +498 -498
- 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 +47 -47
- package/src/types/notifications/README.md +77 -77
- package/src/types/notifications/index.ts +286 -286
- 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 -275
- 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 +132 -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 +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 +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 -217
- 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 +195 -195
- package/src/validations/schemas.ts +104 -104
- package/src/validations/shared.schema.ts +78 -78
|
@@ -1,181 +1,181 @@
|
|
|
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
|
-
* Procedure represents a specific medical procedure that can be performed by a practitioner in a clinic
|
|
27
|
-
* It inherits properties from technology and adds clinic/practitioner specific details
|
|
28
|
-
*/
|
|
29
|
-
export interface Procedure {
|
|
30
|
-
/** Unique identifier of the procedure */
|
|
31
|
-
id: string;
|
|
32
|
-
/** Name of the procedure */
|
|
33
|
-
name: string;
|
|
34
|
-
/** Lowercase version of the name for case-insensitive search */
|
|
35
|
-
nameLower: string;
|
|
36
|
-
/** Photos of the procedure */
|
|
37
|
-
photos?: MediaResource[];
|
|
38
|
-
/** Detailed description of the procedure */
|
|
39
|
-
description: string;
|
|
40
|
-
/** Family of procedures this belongs to (aesthetics/surgery) */
|
|
41
|
-
family: ProcedureFamily;
|
|
42
|
-
/** Category this procedure belongs to */
|
|
43
|
-
category: Category;
|
|
44
|
-
/** Subcategory this procedure belongs to */
|
|
45
|
-
subcategory: Subcategory;
|
|
46
|
-
/** Technology used in this procedure */
|
|
47
|
-
technology: Technology;
|
|
48
|
-
/** Default product used in this procedure (optional for consultations) */
|
|
49
|
-
product?: Product;
|
|
50
|
-
/** Default price of the procedure */
|
|
51
|
-
price: number;
|
|
52
|
-
/** Currency for the price */
|
|
53
|
-
currency: Currency;
|
|
54
|
-
/** How the price is measured (per ml, per zone, etc.) - for default product*/
|
|
55
|
-
pricingMeasure: PricingMeasure;
|
|
56
|
-
/** Duration of the procedure in minutes */
|
|
57
|
-
productsMetadata?: ProcedureProduct[];
|
|
58
|
-
duration: number;
|
|
59
|
-
/** Blocking conditions that prevent this procedure */
|
|
60
|
-
blockingConditions: BlockingCondition[];
|
|
61
|
-
/** Treatment benefits of this procedure */
|
|
62
|
-
treatmentBenefits: TreatmentBenefitDynamic[];
|
|
63
|
-
/** A list of just the string IDs of the treatment benefits, for efficient querying. */
|
|
64
|
-
treatmentBenefitIds: string[];
|
|
65
|
-
/** Contraindications of this procedure */
|
|
66
|
-
contraindications: ContraindicationDynamic[];
|
|
67
|
-
/** A list of just the string IDs of the contraindications, for efficient querying. */
|
|
68
|
-
contraindicationIds: string[];
|
|
69
|
-
/** Pre-procedure requirements */
|
|
70
|
-
preRequirements: Requirement[];
|
|
71
|
-
/** Post-procedure requirements */
|
|
72
|
-
postRequirements: Requirement[];
|
|
73
|
-
/** Certification requirements for performing this procedure */
|
|
74
|
-
certificationRequirement: CertificationRequirement;
|
|
75
|
-
/** Documentation templates required for this procedure */
|
|
76
|
-
documentationTemplates: TechnologyDocumentationTemplate[];
|
|
77
|
-
/** ID of the practitioner who performs this procedure */
|
|
78
|
-
practitionerId: string;
|
|
79
|
-
/** ID of the clinic branch where this procedure is performed */
|
|
80
|
-
clinicBranchId: string;
|
|
81
|
-
/** Aggregated clinic information */
|
|
82
|
-
clinicInfo: ClinicInfo;
|
|
83
|
-
/** Aggregated doctor information */
|
|
84
|
-
doctorInfo: DoctorInfo;
|
|
85
|
-
/** Aggregated review information for this procedure */
|
|
86
|
-
reviewInfo: ProcedureReviewInfo;
|
|
87
|
-
/** Whether this procedure is active */
|
|
88
|
-
isActive: boolean;
|
|
89
|
-
/** When this procedure was created */
|
|
90
|
-
createdAt: Date;
|
|
91
|
-
/** When this procedure was last updated */
|
|
92
|
-
updatedAt: Date;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Data required to create a new procedure
|
|
97
|
-
*/
|
|
98
|
-
export interface CreateProcedureData {
|
|
99
|
-
name: string;
|
|
100
|
-
/** Lowercase version of the name for case-insensitive search */
|
|
101
|
-
nameLower: string;
|
|
102
|
-
description: string;
|
|
103
|
-
family: ProcedureFamily;
|
|
104
|
-
categoryId: string;
|
|
105
|
-
subcategoryId: string;
|
|
106
|
-
technologyId: string;
|
|
107
|
-
productId?: string;
|
|
108
|
-
price: number;
|
|
109
|
-
productsMetadata?: {
|
|
110
|
-
productId: string;
|
|
111
|
-
price: number;
|
|
112
|
-
currency: Currency;
|
|
113
|
-
pricingMeasure: PricingMeasure;
|
|
114
|
-
isDefault?: boolean;
|
|
115
|
-
}[];
|
|
116
|
-
currency: Currency;
|
|
117
|
-
pricingMeasure: PricingMeasure;
|
|
118
|
-
duration: number;
|
|
119
|
-
practitionerId: string;
|
|
120
|
-
clinicBranchId: string;
|
|
121
|
-
photos?: MediaResource[];
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Data that can be updated for an existing procedure
|
|
126
|
-
*/
|
|
127
|
-
export interface UpdateProcedureData {
|
|
128
|
-
name?: string;
|
|
129
|
-
/** Lowercase version of the name for case-insensitive search */
|
|
130
|
-
nameLower?: string;
|
|
131
|
-
description?: string;
|
|
132
|
-
price?: number;
|
|
133
|
-
currency?: Currency;
|
|
134
|
-
pricingMeasure?: PricingMeasure;
|
|
135
|
-
productsMetadata?: {
|
|
136
|
-
productId: string;
|
|
137
|
-
price: number;
|
|
138
|
-
currency: Currency;
|
|
139
|
-
pricingMeasure: PricingMeasure;
|
|
140
|
-
isDefault?: boolean;
|
|
141
|
-
}[];
|
|
142
|
-
duration?: number;
|
|
143
|
-
isActive?: boolean;
|
|
144
|
-
practitionerId?: string;
|
|
145
|
-
categoryId?: string;
|
|
146
|
-
subcategoryId?: string;
|
|
147
|
-
technologyId?: string;
|
|
148
|
-
productId?: string;
|
|
149
|
-
clinicBranchId?: string;
|
|
150
|
-
photos?: MediaResource[];
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Collection name for procedures in Firestore
|
|
155
|
-
*/
|
|
156
|
-
export const PROCEDURES_COLLECTION = "procedures";
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Aggregated summary information for a procedure.
|
|
160
|
-
* Used in arrays within Clinic and Practitioner documents for quick display.
|
|
161
|
-
*/
|
|
162
|
-
export interface ProcedureSummaryInfo {
|
|
163
|
-
id: string;
|
|
164
|
-
name: string;
|
|
165
|
-
description?: string;
|
|
166
|
-
photo?: string; // Still using empty string if no source found
|
|
167
|
-
family: ProcedureFamily;
|
|
168
|
-
categoryName: string; // Use names for aggregation
|
|
169
|
-
subcategoryName: string; // Use names for aggregation
|
|
170
|
-
technologyName: string; // Use names for aggregation
|
|
171
|
-
brandName?: string; // Added: Name of the brand used (if applicable)
|
|
172
|
-
productName?: string; // Added: Name of the product used (if applicable)
|
|
173
|
-
price: number;
|
|
174
|
-
pricingMeasure: PricingMeasure;
|
|
175
|
-
currency: Currency;
|
|
176
|
-
duration: number;
|
|
177
|
-
clinicId: string;
|
|
178
|
-
clinicName: string;
|
|
179
|
-
practitionerId: string;
|
|
180
|
-
practitionerName: string;
|
|
181
|
-
}
|
|
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
|
+
* Procedure represents a specific medical procedure that can be performed by a practitioner in a clinic
|
|
27
|
+
* It inherits properties from technology and adds clinic/practitioner specific details
|
|
28
|
+
*/
|
|
29
|
+
export interface Procedure {
|
|
30
|
+
/** Unique identifier of the procedure */
|
|
31
|
+
id: string;
|
|
32
|
+
/** Name of the procedure */
|
|
33
|
+
name: string;
|
|
34
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
35
|
+
nameLower: string;
|
|
36
|
+
/** Photos of the procedure */
|
|
37
|
+
photos?: MediaResource[];
|
|
38
|
+
/** Detailed description of the procedure */
|
|
39
|
+
description: string;
|
|
40
|
+
/** Family of procedures this belongs to (aesthetics/surgery) */
|
|
41
|
+
family: ProcedureFamily;
|
|
42
|
+
/** Category this procedure belongs to */
|
|
43
|
+
category: Category;
|
|
44
|
+
/** Subcategory this procedure belongs to */
|
|
45
|
+
subcategory: Subcategory;
|
|
46
|
+
/** Technology used in this procedure */
|
|
47
|
+
technology: Technology;
|
|
48
|
+
/** Default product used in this procedure (optional for consultations) */
|
|
49
|
+
product?: Product;
|
|
50
|
+
/** Default price of the procedure */
|
|
51
|
+
price: number;
|
|
52
|
+
/** Currency for the price */
|
|
53
|
+
currency: Currency;
|
|
54
|
+
/** How the price is measured (per ml, per zone, etc.) - for default product*/
|
|
55
|
+
pricingMeasure: PricingMeasure;
|
|
56
|
+
/** Duration of the procedure in minutes */
|
|
57
|
+
productsMetadata?: ProcedureProduct[];
|
|
58
|
+
duration: number;
|
|
59
|
+
/** Blocking conditions that prevent this procedure */
|
|
60
|
+
blockingConditions: BlockingCondition[];
|
|
61
|
+
/** Treatment benefits of this procedure */
|
|
62
|
+
treatmentBenefits: TreatmentBenefitDynamic[];
|
|
63
|
+
/** A list of just the string IDs of the treatment benefits, for efficient querying. */
|
|
64
|
+
treatmentBenefitIds: string[];
|
|
65
|
+
/** Contraindications of this procedure */
|
|
66
|
+
contraindications: ContraindicationDynamic[];
|
|
67
|
+
/** A list of just the string IDs of the contraindications, for efficient querying. */
|
|
68
|
+
contraindicationIds: string[];
|
|
69
|
+
/** Pre-procedure requirements */
|
|
70
|
+
preRequirements: Requirement[];
|
|
71
|
+
/** Post-procedure requirements */
|
|
72
|
+
postRequirements: Requirement[];
|
|
73
|
+
/** Certification requirements for performing this procedure */
|
|
74
|
+
certificationRequirement: CertificationRequirement;
|
|
75
|
+
/** Documentation templates required for this procedure */
|
|
76
|
+
documentationTemplates: TechnologyDocumentationTemplate[];
|
|
77
|
+
/** ID of the practitioner who performs this procedure */
|
|
78
|
+
practitionerId: string;
|
|
79
|
+
/** ID of the clinic branch where this procedure is performed */
|
|
80
|
+
clinicBranchId: string;
|
|
81
|
+
/** Aggregated clinic information */
|
|
82
|
+
clinicInfo: ClinicInfo;
|
|
83
|
+
/** Aggregated doctor information */
|
|
84
|
+
doctorInfo: DoctorInfo;
|
|
85
|
+
/** Aggregated review information for this procedure */
|
|
86
|
+
reviewInfo: ProcedureReviewInfo;
|
|
87
|
+
/** Whether this procedure is active */
|
|
88
|
+
isActive: boolean;
|
|
89
|
+
/** When this procedure was created */
|
|
90
|
+
createdAt: Date;
|
|
91
|
+
/** When this procedure was last updated */
|
|
92
|
+
updatedAt: Date;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Data required to create a new procedure
|
|
97
|
+
*/
|
|
98
|
+
export interface CreateProcedureData {
|
|
99
|
+
name: string;
|
|
100
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
101
|
+
nameLower: string;
|
|
102
|
+
description: string;
|
|
103
|
+
family: ProcedureFamily;
|
|
104
|
+
categoryId: string;
|
|
105
|
+
subcategoryId: string;
|
|
106
|
+
technologyId: string;
|
|
107
|
+
productId?: string;
|
|
108
|
+
price: number;
|
|
109
|
+
productsMetadata?: {
|
|
110
|
+
productId: string;
|
|
111
|
+
price: number;
|
|
112
|
+
currency: Currency;
|
|
113
|
+
pricingMeasure: PricingMeasure;
|
|
114
|
+
isDefault?: boolean;
|
|
115
|
+
}[];
|
|
116
|
+
currency: Currency;
|
|
117
|
+
pricingMeasure: PricingMeasure;
|
|
118
|
+
duration: number;
|
|
119
|
+
practitionerId: string;
|
|
120
|
+
clinicBranchId: string;
|
|
121
|
+
photos?: MediaResource[];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Data that can be updated for an existing procedure
|
|
126
|
+
*/
|
|
127
|
+
export interface UpdateProcedureData {
|
|
128
|
+
name?: string;
|
|
129
|
+
/** Lowercase version of the name for case-insensitive search */
|
|
130
|
+
nameLower?: string;
|
|
131
|
+
description?: string;
|
|
132
|
+
price?: number;
|
|
133
|
+
currency?: Currency;
|
|
134
|
+
pricingMeasure?: PricingMeasure;
|
|
135
|
+
productsMetadata?: {
|
|
136
|
+
productId: string;
|
|
137
|
+
price: number;
|
|
138
|
+
currency: Currency;
|
|
139
|
+
pricingMeasure: PricingMeasure;
|
|
140
|
+
isDefault?: boolean;
|
|
141
|
+
}[];
|
|
142
|
+
duration?: number;
|
|
143
|
+
isActive?: boolean;
|
|
144
|
+
practitionerId?: string;
|
|
145
|
+
categoryId?: string;
|
|
146
|
+
subcategoryId?: string;
|
|
147
|
+
technologyId?: string;
|
|
148
|
+
productId?: string;
|
|
149
|
+
clinicBranchId?: string;
|
|
150
|
+
photos?: MediaResource[];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Collection name for procedures in Firestore
|
|
155
|
+
*/
|
|
156
|
+
export const PROCEDURES_COLLECTION = "procedures";
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Aggregated summary information for a procedure.
|
|
160
|
+
* Used in arrays within Clinic and Practitioner documents for quick display.
|
|
161
|
+
*/
|
|
162
|
+
export interface ProcedureSummaryInfo {
|
|
163
|
+
id: string;
|
|
164
|
+
name: string;
|
|
165
|
+
description?: string;
|
|
166
|
+
photo?: string; // Still using empty string if no source found
|
|
167
|
+
family: ProcedureFamily;
|
|
168
|
+
categoryName: string; // Use names for aggregation
|
|
169
|
+
subcategoryName: string; // Use names for aggregation
|
|
170
|
+
technologyName: string; // Use names for aggregation
|
|
171
|
+
brandName?: string; // Added: Name of the brand used (if applicable)
|
|
172
|
+
productName?: string; // Added: Name of the product used (if applicable)
|
|
173
|
+
price: number;
|
|
174
|
+
pricingMeasure: PricingMeasure;
|
|
175
|
+
currency: Currency;
|
|
176
|
+
duration: number;
|
|
177
|
+
clinicId: string;
|
|
178
|
+
clinicName: string;
|
|
179
|
+
practitionerId: string;
|
|
180
|
+
practitionerName: string;
|
|
181
|
+
}
|
|
@@ -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
|
+
}
|