@blackcode_sa/metaestetics-api 1.12.65 → 1.12.67
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 +2 -0
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.js +45 -4
- package/dist/admin/index.mjs +45 -4
- package/dist/backoffice/index.d.mts +33 -0
- package/dist/backoffice/index.d.ts +33 -0
- package/dist/backoffice/index.js +63 -0
- package/dist/backoffice/index.mjs +63 -0
- package/dist/index.d.mts +35 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +116 -11
- package/dist/index.mjs +116 -11
- 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 +689 -641
- 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 +341 -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 +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 +417 -395
- package/src/backoffice/services/technology.service.ts +1104 -1083
- 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 -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 +168 -163
- 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/appointment/README.md +17 -17
- package/src/services/appointment/appointment.service.ts +2505 -2505
- 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 +1715 -1715
- package/src/services/reviews/index.ts +1 -1
- package/src/services/reviews/reviews.service.ts +683 -636
- 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 +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 +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 -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 -130
- 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 -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 -189
- package/src/validations/schemas.ts +104 -104
- package/src/validations/shared.schema.ts +78 -78
|
@@ -1,240 +1,240 @@
|
|
|
1
|
-
import type { ContraindicationDynamic } from './admin-constants.types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Product used in procedures
|
|
5
|
-
* Can be consumables, equipment, or any other product needed for performing procedures
|
|
6
|
-
*
|
|
7
|
-
* @property id - Unique identifier of the product
|
|
8
|
-
* @property name - Name of the product
|
|
9
|
-
* @property brandId - ID of the brand that manufactures this product
|
|
10
|
-
* @property brandName - Name of the brand (denormalized for display)
|
|
11
|
-
* @property assignedTechnologyIds - Array of technology IDs this product is assigned to
|
|
12
|
-
* @property description - Detailed description of the product and its purpose
|
|
13
|
-
* @property technicalDetails - Technical details and specifications
|
|
14
|
-
* @property warnings - List of warnings related to product use
|
|
15
|
-
* @property dosage - Dosage information (if applicable)
|
|
16
|
-
* @property composition - Product composition
|
|
17
|
-
* @property indications - List of indications for use
|
|
18
|
-
* @property contraindications - List of contraindications
|
|
19
|
-
* @property isActive - Whether the product is active in the system
|
|
20
|
-
* @property createdAt - Creation date
|
|
21
|
-
* @property updatedAt - Last update date
|
|
22
|
-
*/
|
|
23
|
-
export interface Product {
|
|
24
|
-
id?: string;
|
|
25
|
-
name: string;
|
|
26
|
-
brandId: string;
|
|
27
|
-
brandName: string;
|
|
28
|
-
|
|
29
|
-
// NEW: Technology assignment tracking
|
|
30
|
-
assignedTechnologyIds?: string[];
|
|
31
|
-
|
|
32
|
-
// Product details
|
|
33
|
-
createdAt: Date;
|
|
34
|
-
updatedAt: Date;
|
|
35
|
-
isActive: boolean;
|
|
36
|
-
description?: string;
|
|
37
|
-
technicalDetails?: string;
|
|
38
|
-
warnings?: string[];
|
|
39
|
-
dosage?: string;
|
|
40
|
-
composition?: string;
|
|
41
|
-
indications?: string[];
|
|
42
|
-
contraindications?: ContraindicationDynamic[];
|
|
43
|
-
|
|
44
|
-
// LEGACY FIELDS: Only present in technology subcollections (/technologies/{id}/products/)
|
|
45
|
-
// These fields are synced by Cloud Functions for backward compatibility
|
|
46
|
-
// NOT stored in top-level /products collection
|
|
47
|
-
/** Present only in subcollections - synced from technology metadata */
|
|
48
|
-
technologyId?: string;
|
|
49
|
-
/** Present only in subcollections - synced from technology name */
|
|
50
|
-
technologyName?: string;
|
|
51
|
-
/** Present only in subcollections - synced from technology categoryId */
|
|
52
|
-
categoryId?: string;
|
|
53
|
-
/** Present only in subcollections - synced from technology subcategoryId */
|
|
54
|
-
subcategoryId?: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Collection in Firestore database where products are stored
|
|
59
|
-
*/
|
|
60
|
-
export const PRODUCTS_COLLECTION = 'products';
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Interface for the ProductService class
|
|
64
|
-
*
|
|
65
|
-
* NOTE: This interface maintains backward compatibility while adding new top-level collection methods.
|
|
66
|
-
* Old methods using technologyId are kept for existing code, new methods work with top-level collection.
|
|
67
|
-
*/
|
|
68
|
-
export interface IProductService {
|
|
69
|
-
// ==========================================
|
|
70
|
-
// NEW METHODS: Top-level collection (preferred)
|
|
71
|
-
// ==========================================
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Creates a new product in the top-level collection
|
|
75
|
-
* @param brandId - ID of the brand that manufactures this product
|
|
76
|
-
* @param product - Product data
|
|
77
|
-
* @param technologyIds - Optional array of technology IDs to assign this product to
|
|
78
|
-
*/
|
|
79
|
-
createTopLevel(
|
|
80
|
-
brandId: string,
|
|
81
|
-
product: Omit<Product, 'id' | 'createdAt' | 'updatedAt' | 'brandId' | 'assignedTechnologyIds'>,
|
|
82
|
-
technologyIds?: string[],
|
|
83
|
-
): Promise<Product>;
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Gets all products from the top-level collection
|
|
87
|
-
* @param options - Query options
|
|
88
|
-
*/
|
|
89
|
-
getAllTopLevel(options: {
|
|
90
|
-
rowsPerPage: number;
|
|
91
|
-
lastVisible?: any;
|
|
92
|
-
brandId?: string;
|
|
93
|
-
}): Promise<{ products: Product[]; lastVisible: any }>;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Gets a product by ID from the top-level collection
|
|
97
|
-
* @param productId - ID of the product
|
|
98
|
-
*/
|
|
99
|
-
getByIdTopLevel(productId: string): Promise<Product | null>;
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Updates a product in the top-level collection
|
|
103
|
-
* @param productId - ID of the product to update
|
|
104
|
-
* @param product - Updated product data
|
|
105
|
-
*/
|
|
106
|
-
updateTopLevel(
|
|
107
|
-
productId: string,
|
|
108
|
-
product: Partial<Omit<Product, 'id' | 'createdAt' | 'brandId'>>,
|
|
109
|
-
): Promise<Product | null>;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Deletes a product from the top-level collection (soft delete)
|
|
113
|
-
* @param productId - ID of the product to delete
|
|
114
|
-
*/
|
|
115
|
-
deleteTopLevel(productId: string): Promise<void>;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Assigns a product to a technology
|
|
119
|
-
* @param productId - ID of the product
|
|
120
|
-
* @param technologyId - ID of the technology
|
|
121
|
-
*/
|
|
122
|
-
assignToTechnology(productId: string, technologyId: string): Promise<void>;
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Unassigns a product from a technology
|
|
126
|
-
* @param productId - ID of the product
|
|
127
|
-
* @param technologyId - ID of the technology
|
|
128
|
-
*/
|
|
129
|
-
unassignFromTechnology(productId: string, technologyId: string): Promise<void>;
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Gets products assigned to a specific technology
|
|
133
|
-
* @param technologyId - ID of the technology
|
|
134
|
-
*/
|
|
135
|
-
getAssignedProducts(technologyId: string): Promise<Product[]>;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Gets products NOT assigned to a specific technology
|
|
139
|
-
* @param technologyId - ID of the technology
|
|
140
|
-
*/
|
|
141
|
-
getUnassignedProducts(technologyId: string): Promise<Product[]>;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Gets all products for a brand
|
|
145
|
-
* @param brandId - ID of the brand
|
|
146
|
-
*/
|
|
147
|
-
getByBrand(brandId: string): Promise<Product[]>;
|
|
148
|
-
|
|
149
|
-
// ==========================================
|
|
150
|
-
// DEPRECATED METHODS: Kept for backward compatibility
|
|
151
|
-
// ==========================================
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* @deprecated Use createTopLevel instead
|
|
155
|
-
* Creates a new product
|
|
156
|
-
* @param technologyId - ID of the technology this product is used with
|
|
157
|
-
* @param brandId - ID of the brand that manufactures this product
|
|
158
|
-
* @param product - Product data
|
|
159
|
-
*/
|
|
160
|
-
create(
|
|
161
|
-
technologyId: string,
|
|
162
|
-
brandId: string,
|
|
163
|
-
product: Omit<Product, 'id' | 'createdAt' | 'updatedAt' | 'brandId' | 'technologyId'>,
|
|
164
|
-
): Promise<Product>;
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* @deprecated Use getAllTopLevel instead
|
|
168
|
-
* Gets a paginated list of all products, with optional filters.
|
|
169
|
-
*/
|
|
170
|
-
getAll(options: {
|
|
171
|
-
rowsPerPage: number;
|
|
172
|
-
lastVisible?: any;
|
|
173
|
-
categoryId?: string;
|
|
174
|
-
subcategoryId?: string;
|
|
175
|
-
technologyId?: string;
|
|
176
|
-
}): Promise<{ products: Product[]; lastVisible: any }>;
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* @deprecated Use alternative counting methods
|
|
180
|
-
* Gets the total count of active products, with optional filters.
|
|
181
|
-
*/
|
|
182
|
-
getProductsCount(options: {
|
|
183
|
-
categoryId?: string;
|
|
184
|
-
subcategoryId?: string;
|
|
185
|
-
technologyId?: string;
|
|
186
|
-
}): Promise<number>;
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* @deprecated Use alternative counting methods
|
|
190
|
-
* Gets counts of active products grouped by category, subcategory, and technology.
|
|
191
|
-
*/
|
|
192
|
-
getProductCounts(): Promise<{
|
|
193
|
-
byCategory: Record<string, number>;
|
|
194
|
-
bySubcategory: Record<string, number>;
|
|
195
|
-
byTechnology: Record<string, number>;
|
|
196
|
-
}>;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* @deprecated Use getAssignedProducts instead
|
|
200
|
-
* Gets all products for a specific technology (non-paginated, for filters/dropdowns)
|
|
201
|
-
* @param technologyId - ID of the technology
|
|
202
|
-
*/
|
|
203
|
-
getAllByTechnology(technologyId: string): Promise<Product[]>;
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* @deprecated Use getByBrand instead
|
|
207
|
-
* Gets all products for a brand
|
|
208
|
-
* @param brandId - ID of the brand
|
|
209
|
-
*/
|
|
210
|
-
getAllByBrand(brandId: string): Promise<Product[]>;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* @deprecated Use updateTopLevel instead
|
|
214
|
-
* Updates a product
|
|
215
|
-
* @param technologyId - ID of the technology
|
|
216
|
-
* @param productId - ID of the product to update
|
|
217
|
-
* @param product - Updated product data
|
|
218
|
-
*/
|
|
219
|
-
update(
|
|
220
|
-
technologyId: string,
|
|
221
|
-
productId: string,
|
|
222
|
-
product: Partial<Omit<Product, 'id' | 'createdAt' | 'brandId' | 'technologyId'>>,
|
|
223
|
-
): Promise<Product | null>;
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* @deprecated Use deleteTopLevel instead
|
|
227
|
-
* Deletes a product (soft delete)
|
|
228
|
-
* @param technologyId - ID of the technology
|
|
229
|
-
* @param productId - ID of the product to delete
|
|
230
|
-
*/
|
|
231
|
-
delete(technologyId: string, productId: string): Promise<void>;
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* @deprecated Use getByIdTopLevel instead
|
|
235
|
-
* Gets a product by ID
|
|
236
|
-
* @param technologyId - ID of the technology
|
|
237
|
-
* @param productId - ID of the product
|
|
238
|
-
*/
|
|
239
|
-
getById(technologyId: string, productId: string): Promise<Product | null>;
|
|
240
|
-
}
|
|
1
|
+
import type { ContraindicationDynamic } from './admin-constants.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Product used in procedures
|
|
5
|
+
* Can be consumables, equipment, or any other product needed for performing procedures
|
|
6
|
+
*
|
|
7
|
+
* @property id - Unique identifier of the product
|
|
8
|
+
* @property name - Name of the product
|
|
9
|
+
* @property brandId - ID of the brand that manufactures this product
|
|
10
|
+
* @property brandName - Name of the brand (denormalized for display)
|
|
11
|
+
* @property assignedTechnologyIds - Array of technology IDs this product is assigned to
|
|
12
|
+
* @property description - Detailed description of the product and its purpose
|
|
13
|
+
* @property technicalDetails - Technical details and specifications
|
|
14
|
+
* @property warnings - List of warnings related to product use
|
|
15
|
+
* @property dosage - Dosage information (if applicable)
|
|
16
|
+
* @property composition - Product composition
|
|
17
|
+
* @property indications - List of indications for use
|
|
18
|
+
* @property contraindications - List of contraindications
|
|
19
|
+
* @property isActive - Whether the product is active in the system
|
|
20
|
+
* @property createdAt - Creation date
|
|
21
|
+
* @property updatedAt - Last update date
|
|
22
|
+
*/
|
|
23
|
+
export interface Product {
|
|
24
|
+
id?: string;
|
|
25
|
+
name: string;
|
|
26
|
+
brandId: string;
|
|
27
|
+
brandName: string;
|
|
28
|
+
|
|
29
|
+
// NEW: Technology assignment tracking
|
|
30
|
+
assignedTechnologyIds?: string[];
|
|
31
|
+
|
|
32
|
+
// Product details
|
|
33
|
+
createdAt: Date;
|
|
34
|
+
updatedAt: Date;
|
|
35
|
+
isActive: boolean;
|
|
36
|
+
description?: string;
|
|
37
|
+
technicalDetails?: string;
|
|
38
|
+
warnings?: string[];
|
|
39
|
+
dosage?: string;
|
|
40
|
+
composition?: string;
|
|
41
|
+
indications?: string[];
|
|
42
|
+
contraindications?: ContraindicationDynamic[];
|
|
43
|
+
|
|
44
|
+
// LEGACY FIELDS: Only present in technology subcollections (/technologies/{id}/products/)
|
|
45
|
+
// These fields are synced by Cloud Functions for backward compatibility
|
|
46
|
+
// NOT stored in top-level /products collection
|
|
47
|
+
/** Present only in subcollections - synced from technology metadata */
|
|
48
|
+
technologyId?: string;
|
|
49
|
+
/** Present only in subcollections - synced from technology name */
|
|
50
|
+
technologyName?: string;
|
|
51
|
+
/** Present only in subcollections - synced from technology categoryId */
|
|
52
|
+
categoryId?: string;
|
|
53
|
+
/** Present only in subcollections - synced from technology subcategoryId */
|
|
54
|
+
subcategoryId?: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Collection in Firestore database where products are stored
|
|
59
|
+
*/
|
|
60
|
+
export const PRODUCTS_COLLECTION = 'products';
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Interface for the ProductService class
|
|
64
|
+
*
|
|
65
|
+
* NOTE: This interface maintains backward compatibility while adding new top-level collection methods.
|
|
66
|
+
* Old methods using technologyId are kept for existing code, new methods work with top-level collection.
|
|
67
|
+
*/
|
|
68
|
+
export interface IProductService {
|
|
69
|
+
// ==========================================
|
|
70
|
+
// NEW METHODS: Top-level collection (preferred)
|
|
71
|
+
// ==========================================
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates a new product in the top-level collection
|
|
75
|
+
* @param brandId - ID of the brand that manufactures this product
|
|
76
|
+
* @param product - Product data
|
|
77
|
+
* @param technologyIds - Optional array of technology IDs to assign this product to
|
|
78
|
+
*/
|
|
79
|
+
createTopLevel(
|
|
80
|
+
brandId: string,
|
|
81
|
+
product: Omit<Product, 'id' | 'createdAt' | 'updatedAt' | 'brandId' | 'assignedTechnologyIds'>,
|
|
82
|
+
technologyIds?: string[],
|
|
83
|
+
): Promise<Product>;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Gets all products from the top-level collection
|
|
87
|
+
* @param options - Query options
|
|
88
|
+
*/
|
|
89
|
+
getAllTopLevel(options: {
|
|
90
|
+
rowsPerPage: number;
|
|
91
|
+
lastVisible?: any;
|
|
92
|
+
brandId?: string;
|
|
93
|
+
}): Promise<{ products: Product[]; lastVisible: any }>;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Gets a product by ID from the top-level collection
|
|
97
|
+
* @param productId - ID of the product
|
|
98
|
+
*/
|
|
99
|
+
getByIdTopLevel(productId: string): Promise<Product | null>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Updates a product in the top-level collection
|
|
103
|
+
* @param productId - ID of the product to update
|
|
104
|
+
* @param product - Updated product data
|
|
105
|
+
*/
|
|
106
|
+
updateTopLevel(
|
|
107
|
+
productId: string,
|
|
108
|
+
product: Partial<Omit<Product, 'id' | 'createdAt' | 'brandId'>>,
|
|
109
|
+
): Promise<Product | null>;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Deletes a product from the top-level collection (soft delete)
|
|
113
|
+
* @param productId - ID of the product to delete
|
|
114
|
+
*/
|
|
115
|
+
deleteTopLevel(productId: string): Promise<void>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Assigns a product to a technology
|
|
119
|
+
* @param productId - ID of the product
|
|
120
|
+
* @param technologyId - ID of the technology
|
|
121
|
+
*/
|
|
122
|
+
assignToTechnology(productId: string, technologyId: string): Promise<void>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Unassigns a product from a technology
|
|
126
|
+
* @param productId - ID of the product
|
|
127
|
+
* @param technologyId - ID of the technology
|
|
128
|
+
*/
|
|
129
|
+
unassignFromTechnology(productId: string, technologyId: string): Promise<void>;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Gets products assigned to a specific technology
|
|
133
|
+
* @param technologyId - ID of the technology
|
|
134
|
+
*/
|
|
135
|
+
getAssignedProducts(technologyId: string): Promise<Product[]>;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Gets products NOT assigned to a specific technology
|
|
139
|
+
* @param technologyId - ID of the technology
|
|
140
|
+
*/
|
|
141
|
+
getUnassignedProducts(technologyId: string): Promise<Product[]>;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Gets all products for a brand
|
|
145
|
+
* @param brandId - ID of the brand
|
|
146
|
+
*/
|
|
147
|
+
getByBrand(brandId: string): Promise<Product[]>;
|
|
148
|
+
|
|
149
|
+
// ==========================================
|
|
150
|
+
// DEPRECATED METHODS: Kept for backward compatibility
|
|
151
|
+
// ==========================================
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @deprecated Use createTopLevel instead
|
|
155
|
+
* Creates a new product
|
|
156
|
+
* @param technologyId - ID of the technology this product is used with
|
|
157
|
+
* @param brandId - ID of the brand that manufactures this product
|
|
158
|
+
* @param product - Product data
|
|
159
|
+
*/
|
|
160
|
+
create(
|
|
161
|
+
technologyId: string,
|
|
162
|
+
brandId: string,
|
|
163
|
+
product: Omit<Product, 'id' | 'createdAt' | 'updatedAt' | 'brandId' | 'technologyId'>,
|
|
164
|
+
): Promise<Product>;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @deprecated Use getAllTopLevel instead
|
|
168
|
+
* Gets a paginated list of all products, with optional filters.
|
|
169
|
+
*/
|
|
170
|
+
getAll(options: {
|
|
171
|
+
rowsPerPage: number;
|
|
172
|
+
lastVisible?: any;
|
|
173
|
+
categoryId?: string;
|
|
174
|
+
subcategoryId?: string;
|
|
175
|
+
technologyId?: string;
|
|
176
|
+
}): Promise<{ products: Product[]; lastVisible: any }>;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @deprecated Use alternative counting methods
|
|
180
|
+
* Gets the total count of active products, with optional filters.
|
|
181
|
+
*/
|
|
182
|
+
getProductsCount(options: {
|
|
183
|
+
categoryId?: string;
|
|
184
|
+
subcategoryId?: string;
|
|
185
|
+
technologyId?: string;
|
|
186
|
+
}): Promise<number>;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use alternative counting methods
|
|
190
|
+
* Gets counts of active products grouped by category, subcategory, and technology.
|
|
191
|
+
*/
|
|
192
|
+
getProductCounts(): Promise<{
|
|
193
|
+
byCategory: Record<string, number>;
|
|
194
|
+
bySubcategory: Record<string, number>;
|
|
195
|
+
byTechnology: Record<string, number>;
|
|
196
|
+
}>;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @deprecated Use getAssignedProducts instead
|
|
200
|
+
* Gets all products for a specific technology (non-paginated, for filters/dropdowns)
|
|
201
|
+
* @param technologyId - ID of the technology
|
|
202
|
+
*/
|
|
203
|
+
getAllByTechnology(technologyId: string): Promise<Product[]>;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @deprecated Use getByBrand instead
|
|
207
|
+
* Gets all products for a brand
|
|
208
|
+
* @param brandId - ID of the brand
|
|
209
|
+
*/
|
|
210
|
+
getAllByBrand(brandId: string): Promise<Product[]>;
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* @deprecated Use updateTopLevel instead
|
|
214
|
+
* Updates a product
|
|
215
|
+
* @param technologyId - ID of the technology
|
|
216
|
+
* @param productId - ID of the product to update
|
|
217
|
+
* @param product - Updated product data
|
|
218
|
+
*/
|
|
219
|
+
update(
|
|
220
|
+
technologyId: string,
|
|
221
|
+
productId: string,
|
|
222
|
+
product: Partial<Omit<Product, 'id' | 'createdAt' | 'brandId' | 'technologyId'>>,
|
|
223
|
+
): Promise<Product | null>;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @deprecated Use deleteTopLevel instead
|
|
227
|
+
* Deletes a product (soft delete)
|
|
228
|
+
* @param technologyId - ID of the technology
|
|
229
|
+
* @param productId - ID of the product to delete
|
|
230
|
+
*/
|
|
231
|
+
delete(technologyId: string, productId: string): Promise<void>;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* @deprecated Use getByIdTopLevel instead
|
|
235
|
+
* Gets a product by ID
|
|
236
|
+
* @param technologyId - ID of the technology
|
|
237
|
+
* @param productId - ID of the product
|
|
238
|
+
*/
|
|
239
|
+
getById(technologyId: string, productId: string): Promise<Product | null>;
|
|
240
|
+
}
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Jedinica mere za vremenski period
|
|
3
|
-
*/
|
|
4
|
-
export enum TimeUnit {
|
|
5
|
-
HOURS = "hours",
|
|
6
|
-
DAYS = "days",
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Tip zahteva - da li se odnosi na period pre ili posle procedure
|
|
11
|
-
*/
|
|
12
|
-
export enum RequirementType {
|
|
13
|
-
PRE = "pre",
|
|
14
|
-
POST = "post",
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Nivo važnosti zahteva
|
|
19
|
-
*/
|
|
20
|
-
export type RequirementImportance = "low" | "medium" | "high";
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Vremenski okvir za zahtev
|
|
24
|
-
* @property duration - Trajanje u odabranoj jedinici vremena
|
|
25
|
-
* @property unit - Jedinica vremena (sati ili dani)
|
|
26
|
-
* @property notifyAt - Lista trenutaka kada treba poslati obaveštenje (u istoj jedinici)
|
|
27
|
-
*/
|
|
28
|
-
export interface TimeFrame {
|
|
29
|
-
duration: number;
|
|
30
|
-
unit: TimeUnit;
|
|
31
|
-
notifyAt: number[];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Zahtev koji se može povezati sa tehnologijom
|
|
36
|
-
* Može biti zahtev pre procedure (pre) ili posle procedure (post)
|
|
37
|
-
*
|
|
38
|
-
* @property id - Jedinstveni identifikator zahteva
|
|
39
|
-
* @property type - Tip zahteva (pre/post)
|
|
40
|
-
* @property name - Naziv zahteva
|
|
41
|
-
* @property description - Detaljan opis zahteva
|
|
42
|
-
* @property timeframe - Vremenski okvir za zahtev
|
|
43
|
-
* @property importance - Nivo važnosti zahteva
|
|
44
|
-
* @property isActive - Da li je zahtev aktivan u sistemu
|
|
45
|
-
* @property createdAt - Datum kreiranja
|
|
46
|
-
* @property updatedAt - Datum poslednjeg ažuriranja
|
|
47
|
-
*/
|
|
48
|
-
export interface Requirement {
|
|
49
|
-
id: string;
|
|
50
|
-
type: RequirementType;
|
|
51
|
-
name: string;
|
|
52
|
-
description: string;
|
|
53
|
-
timeframe: TimeFrame;
|
|
54
|
-
importance: RequirementImportance;
|
|
55
|
-
isActive: boolean;
|
|
56
|
-
createdAt: Date;
|
|
57
|
-
updatedAt: Date;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Kolekcija u Firestore bazi gde se čuvaju globalni zahtevi
|
|
62
|
-
*/
|
|
63
|
-
export const REQUIREMENTS_COLLECTION = "backoffice_requirements";
|
|
1
|
+
/**
|
|
2
|
+
* Jedinica mere za vremenski period
|
|
3
|
+
*/
|
|
4
|
+
export enum TimeUnit {
|
|
5
|
+
HOURS = "hours",
|
|
6
|
+
DAYS = "days",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Tip zahteva - da li se odnosi na period pre ili posle procedure
|
|
11
|
+
*/
|
|
12
|
+
export enum RequirementType {
|
|
13
|
+
PRE = "pre",
|
|
14
|
+
POST = "post",
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Nivo važnosti zahteva
|
|
19
|
+
*/
|
|
20
|
+
export type RequirementImportance = "low" | "medium" | "high";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Vremenski okvir za zahtev
|
|
24
|
+
* @property duration - Trajanje u odabranoj jedinici vremena
|
|
25
|
+
* @property unit - Jedinica vremena (sati ili dani)
|
|
26
|
+
* @property notifyAt - Lista trenutaka kada treba poslati obaveštenje (u istoj jedinici)
|
|
27
|
+
*/
|
|
28
|
+
export interface TimeFrame {
|
|
29
|
+
duration: number;
|
|
30
|
+
unit: TimeUnit;
|
|
31
|
+
notifyAt: number[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Zahtev koji se može povezati sa tehnologijom
|
|
36
|
+
* Može biti zahtev pre procedure (pre) ili posle procedure (post)
|
|
37
|
+
*
|
|
38
|
+
* @property id - Jedinstveni identifikator zahteva
|
|
39
|
+
* @property type - Tip zahteva (pre/post)
|
|
40
|
+
* @property name - Naziv zahteva
|
|
41
|
+
* @property description - Detaljan opis zahteva
|
|
42
|
+
* @property timeframe - Vremenski okvir za zahtev
|
|
43
|
+
* @property importance - Nivo važnosti zahteva
|
|
44
|
+
* @property isActive - Da li je zahtev aktivan u sistemu
|
|
45
|
+
* @property createdAt - Datum kreiranja
|
|
46
|
+
* @property updatedAt - Datum poslednjeg ažuriranja
|
|
47
|
+
*/
|
|
48
|
+
export interface Requirement {
|
|
49
|
+
id: string;
|
|
50
|
+
type: RequirementType;
|
|
51
|
+
name: string;
|
|
52
|
+
description: string;
|
|
53
|
+
timeframe: TimeFrame;
|
|
54
|
+
importance: RequirementImportance;
|
|
55
|
+
isActive: boolean;
|
|
56
|
+
createdAt: Date;
|
|
57
|
+
updatedAt: Date;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Kolekcija u Firestore bazi gde se čuvaju globalni zahtevi
|
|
62
|
+
*/
|
|
63
|
+
export const REQUIREMENTS_COLLECTION = "backoffice_requirements";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# Static Types
|
|
2
|
-
|
|
3
|
-
This directory contains all static type definitions used throughout the backoffice application. These types are considered "static" because they represent data that is generally fixed and does not change frequently.
|
|
4
|
-
|
|
5
|
-
## Available Types
|
|
6
|
-
|
|
7
|
-
The following static types are available for import:
|
|
8
|
-
|
|
9
|
-
- `BlockingCondition`: Defines conditions that may prevent a procedure.
|
|
10
|
-
- `Certification`: Represents professional certifications.
|
|
11
|
-
- `Contraindication`: Specifies conditions or factors that serve as a reason to withhold a certain medical treatment.
|
|
12
|
-
- `Pricing`: Defines the structure for pricing information.
|
|
13
|
-
- `ProcedureFamily`: Groups related medical procedures.
|
|
14
|
-
- `TreatmentBenefit`: Describes the benefits of a treatment.
|
|
15
|
-
|
|
16
|
-
## Usage
|
|
17
|
-
|
|
18
|
-
All types in this directory are exported from the main `index.ts` file. You can import them directly from this module.
|
|
1
|
+
# Static Types
|
|
2
|
+
|
|
3
|
+
This directory contains all static type definitions used throughout the backoffice application. These types are considered "static" because they represent data that is generally fixed and does not change frequently.
|
|
4
|
+
|
|
5
|
+
## Available Types
|
|
6
|
+
|
|
7
|
+
The following static types are available for import:
|
|
8
|
+
|
|
9
|
+
- `BlockingCondition`: Defines conditions that may prevent a procedure.
|
|
10
|
+
- `Certification`: Represents professional certifications.
|
|
11
|
+
- `Contraindication`: Specifies conditions or factors that serve as a reason to withhold a certain medical treatment.
|
|
12
|
+
- `Pricing`: Defines the structure for pricing information.
|
|
13
|
+
- `ProcedureFamily`: Groups related medical procedures.
|
|
14
|
+
- `TreatmentBenefit`: Describes the benefits of a treatment.
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
All types in this directory are exported from the main `index.ts` file. You can import them directly from this module.
|