@blackcode_sa/metaestetics-api 1.12.61 → 1.12.62
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/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +53 -11
- package/dist/index.mjs +53 -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 +318 -318
- package/src/backoffice/services/constants.service.ts +385 -385
- package/src/backoffice/services/documentation-template.service.ts +202 -202
- package/src/backoffice/services/index.ts +8 -8
- package/src/backoffice/services/migrate-products.ts +116 -116
- package/src/backoffice/services/product.service.ts +553 -553
- package/src/backoffice/services/requirement.service.ts +235 -235
- package/src/backoffice/services/subcategory.service.ts +395 -395
- package/src/backoffice/services/technology.service.ts +1070 -1070
- package/src/backoffice/types/README.md +12 -12
- package/src/backoffice/types/admin-constants.types.ts +69 -69
- package/src/backoffice/types/brand.types.ts +29 -29
- package/src/backoffice/types/category.types.ts +62 -62
- package/src/backoffice/types/documentation-templates.types.ts +28 -28
- package/src/backoffice/types/index.ts +10 -10
- package/src/backoffice/types/procedure-product.types.ts +38 -38
- package/src/backoffice/types/product.types.ts +240 -240
- package/src/backoffice/types/requirement.types.ts +63 -63
- package/src/backoffice/types/static/README.md +18 -18
- package/src/backoffice/types/static/blocking-condition.types.ts +21 -21
- package/src/backoffice/types/static/certification.types.ts +37 -37
- package/src/backoffice/types/static/contraindication.types.ts +19 -19
- package/src/backoffice/types/static/index.ts +6 -6
- package/src/backoffice/types/static/pricing.types.ts +16 -16
- package/src/backoffice/types/static/procedure-family.types.ts +14 -14
- package/src/backoffice/types/static/treatment-benefit.types.ts +22 -22
- package/src/backoffice/types/subcategory.types.ts +34 -34
- package/src/backoffice/types/technology.types.ts +161 -161
- package/src/backoffice/validations/index.ts +1 -1
- package/src/backoffice/validations/schemas.ts +163 -163
- package/src/config/__mocks__/firebase.ts +99 -99
- package/src/config/firebase.ts +78 -78
- package/src/config/index.ts +9 -9
- package/src/errors/auth.error.ts +6 -6
- package/src/errors/auth.errors.ts +200 -200
- package/src/errors/clinic.errors.ts +32 -32
- package/src/errors/firebase.errors.ts +47 -47
- package/src/errors/user.errors.ts +99 -99
- package/src/index.backup.ts +407 -407
- package/src/index.ts +6 -6
- package/src/locales/en.ts +31 -31
- package/src/recommender/admin/index.ts +1 -1
- package/src/recommender/admin/services/recommender.service.admin.ts +5 -5
- package/src/recommender/front/index.ts +1 -1
- package/src/recommender/front/services/onboarding.service.ts +5 -5
- package/src/recommender/front/services/recommender.service.ts +3 -3
- package/src/recommender/index.ts +1 -1
- package/src/services/PATIENTAUTH.MD +197 -197
- package/src/services/README.md +106 -106
- package/src/services/__tests__/auth/auth.mock.test.ts +17 -17
- package/src/services/__tests__/auth/auth.setup.ts +293 -293
- package/src/services/__tests__/auth.service.test.ts +346 -346
- package/src/services/__tests__/base.service.test.ts +77 -77
- package/src/services/__tests__/user.service.test.ts +528 -528
- package/src/services/appointment/README.md +17 -17
- package/src/services/appointment/appointment.service.ts +2082 -2082
- package/src/services/appointment/index.ts +1 -1
- package/src/services/appointment/utils/appointment.utils.ts +552 -552
- package/src/services/appointment/utils/extended-procedure.utils.ts +314 -314
- package/src/services/appointment/utils/form-initialization.utils.ts +225 -225
- package/src/services/appointment/utils/recommended-procedure.utils.ts +195 -195
- package/src/services/appointment/utils/zone-management.utils.ts +353 -353
- package/src/services/appointment/utils/zone-photo.utils.ts +152 -152
- package/src/services/auth/auth.service.ts +989 -989
- package/src/services/auth/auth.v2.service.ts +961 -961
- package/src/services/auth/index.ts +7 -7
- package/src/services/auth/utils/error.utils.ts +90 -90
- package/src/services/auth/utils/firebase.utils.ts +49 -49
- package/src/services/auth/utils/index.ts +21 -21
- package/src/services/auth/utils/practitioner.utils.ts +125 -125
- package/src/services/base.service.ts +41 -41
- package/src/services/calendar/calendar.service.ts +1077 -1077
- package/src/services/calendar/calendar.v2.service.ts +1683 -1683
- package/src/services/calendar/calendar.v3.service.ts +313 -313
- package/src/services/calendar/externalCalendar.service.ts +178 -178
- package/src/services/calendar/index.ts +5 -5
- package/src/services/calendar/synced-calendars.service.ts +743 -743
- package/src/services/calendar/utils/appointment.utils.ts +265 -265
- package/src/services/calendar/utils/calendar-event.utils.ts +646 -646
- package/src/services/calendar/utils/clinic.utils.ts +237 -237
- package/src/services/calendar/utils/docs.utils.ts +157 -157
- package/src/services/calendar/utils/google-calendar.utils.ts +697 -697
- package/src/services/calendar/utils/index.ts +8 -8
- package/src/services/calendar/utils/patient.utils.ts +198 -198
- package/src/services/calendar/utils/practitioner.utils.ts +221 -221
- package/src/services/calendar/utils/synced-calendar.utils.ts +472 -472
- package/src/services/clinic/README.md +204 -204
- package/src/services/clinic/__tests__/clinic-admin.service.test.ts +287 -287
- package/src/services/clinic/__tests__/clinic-group.service.test.ts +352 -352
- package/src/services/clinic/__tests__/clinic.service.test.ts +354 -354
- package/src/services/clinic/billing-transactions.service.ts +217 -217
- package/src/services/clinic/clinic-admin.service.ts +202 -202
- package/src/services/clinic/clinic-group.service.ts +310 -310
- package/src/services/clinic/clinic.service.ts +708 -708
- package/src/services/clinic/index.ts +5 -5
- package/src/services/clinic/practitioner-invite.service.ts +519 -519
- package/src/services/clinic/utils/admin.utils.ts +551 -551
- package/src/services/clinic/utils/clinic-group.utils.ts +646 -646
- package/src/services/clinic/utils/clinic.utils.ts +949 -949
- package/src/services/clinic/utils/filter.utils.d.ts +23 -23
- package/src/services/clinic/utils/filter.utils.ts +446 -446
- package/src/services/clinic/utils/index.ts +11 -11
- package/src/services/clinic/utils/photos.utils.ts +188 -188
- package/src/services/clinic/utils/search.utils.ts +84 -84
- package/src/services/clinic/utils/tag.utils.ts +124 -124
- package/src/services/documentation-templates/documentation-template.service.ts +537 -537
- package/src/services/documentation-templates/filled-document.service.ts +587 -587
- package/src/services/documentation-templates/index.ts +2 -2
- package/src/services/index.ts +13 -13
- package/src/services/media/index.ts +1 -1
- package/src/services/media/media.service.ts +418 -418
- package/src/services/notifications/__tests__/notification.service.test.ts +242 -242
- package/src/services/notifications/index.ts +1 -1
- package/src/services/notifications/notification.service.ts +215 -215
- package/src/services/patient/README.md +48 -48
- package/src/services/patient/To-Do.md +43 -43
- package/src/services/patient/__tests__/patient.service.test.ts +294 -294
- package/src/services/patient/index.ts +2 -2
- package/src/services/patient/patient.service.ts +883 -883
- package/src/services/patient/patientRequirements.service.ts +285 -285
- package/src/services/patient/utils/aesthetic-analysis.utils.ts +176 -176
- package/src/services/patient/utils/clinic.utils.ts +80 -80
- package/src/services/patient/utils/docs.utils.ts +142 -142
- package/src/services/patient/utils/index.ts +9 -9
- package/src/services/patient/utils/location.utils.ts +126 -126
- package/src/services/patient/utils/medical-stuff.utils.ts +143 -143
- package/src/services/patient/utils/medical.utils.ts +458 -458
- package/src/services/patient/utils/practitioner.utils.ts +260 -260
- package/src/services/patient/utils/profile.utils.ts +510 -510
- package/src/services/patient/utils/sensitive.utils.ts +260 -260
- package/src/services/patient/utils/token.utils.ts +211 -211
- package/src/services/practitioner/README.md +145 -145
- package/src/services/practitioner/index.ts +1 -1
- package/src/services/practitioner/practitioner.service.ts +1742 -1742
- package/src/services/procedure/README.md +163 -163
- package/src/services/procedure/index.ts +1 -1
- package/src/services/procedure/procedure.service.ts +1682 -1682
- package/src/services/reviews/index.ts +1 -1
- package/src/services/reviews/reviews.service.ts +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 +453 -453
- package/src/types/calendar/index.ts +258 -258
- package/src/types/calendar/synced-calendar.types.ts +66 -66
- package/src/types/clinic/index.ts +489 -489
- package/src/types/clinic/practitioner-invite.types.ts +91 -91
- package/src/types/clinic/preferences.types.ts +159 -159
- package/src/types/clinic/to-do +3 -3
- package/src/types/documentation-templates/index.ts +308 -308
- package/src/types/index.ts +44 -44
- package/src/types/notifications/README.md +77 -77
- package/src/types/notifications/index.ts +265 -265
- package/src/types/patient/aesthetic-analysis.types.ts +66 -66
- package/src/types/patient/allergies.ts +58 -58
- package/src/types/patient/index.ts +273 -273
- package/src/types/patient/medical-info.types.ts +152 -152
- package/src/types/patient/patient-requirements.ts +92 -92
- package/src/types/patient/token.types.ts +61 -61
- package/src/types/practitioner/index.ts +206 -206
- package/src/types/procedure/index.ts +181 -181
- package/src/types/profile/index.ts +39 -39
- package/src/types/reviews/index.ts +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 +216 -216
- package/src/validations/practitioner.schema.ts +222 -222
- package/src/validations/procedure-product.schema.ts +41 -41
- package/src/validations/procedure.schema.ts +124 -124
- package/src/validations/profile-info.schema.ts +41 -41
- package/src/validations/reviews.schema.ts +195 -189
- package/src/validations/schemas.ts +104 -104
- package/src/validations/shared.schema.ts +78 -78
package/dist/admin/index.d.mts
CHANGED
|
@@ -70,6 +70,7 @@ interface PractitionerReview extends BaseReview {
|
|
|
70
70
|
/**
|
|
71
71
|
* Procedure review interface
|
|
72
72
|
* @description Full review for a medical procedure
|
|
73
|
+
* Used for both main and extended procedures
|
|
73
74
|
*/
|
|
74
75
|
interface ProcedureReview extends BaseReview {
|
|
75
76
|
procedureId: string;
|
|
@@ -138,6 +139,7 @@ interface Review {
|
|
|
138
139
|
clinicReview?: ClinicReview;
|
|
139
140
|
practitionerReview?: PractitionerReview;
|
|
140
141
|
procedureReview?: ProcedureReview;
|
|
142
|
+
extendedProcedureReviews?: ProcedureReview[];
|
|
141
143
|
overallComment: string;
|
|
142
144
|
overallRating: number;
|
|
143
145
|
}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ interface PractitionerReview extends BaseReview {
|
|
|
70
70
|
/**
|
|
71
71
|
* Procedure review interface
|
|
72
72
|
* @description Full review for a medical procedure
|
|
73
|
+
* Used for both main and extended procedures
|
|
73
74
|
*/
|
|
74
75
|
interface ProcedureReview extends BaseReview {
|
|
75
76
|
procedureId: string;
|
|
@@ -138,6 +139,7 @@ interface Review {
|
|
|
138
139
|
clinicReview?: ClinicReview;
|
|
139
140
|
practitionerReview?: PractitionerReview;
|
|
140
141
|
procedureReview?: ProcedureReview;
|
|
142
|
+
extendedProcedureReviews?: ProcedureReview[];
|
|
141
143
|
overallComment: string;
|
|
142
144
|
overallRating: number;
|
|
143
145
|
}
|
package/dist/admin/index.js
CHANGED
|
@@ -6375,6 +6375,16 @@ var ReviewsAggregationService = class {
|
|
|
6375
6375
|
this.updateProcedureReviewInfo(review.procedureReview.procedureId)
|
|
6376
6376
|
);
|
|
6377
6377
|
}
|
|
6378
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6379
|
+
console.log(
|
|
6380
|
+
`[ReviewsAggregationService] Processing ${review.extendedProcedureReviews.length} extended procedure reviews`
|
|
6381
|
+
);
|
|
6382
|
+
review.extendedProcedureReviews.forEach((extendedReview) => {
|
|
6383
|
+
updatePromises.push(
|
|
6384
|
+
this.updateProcedureReviewInfo(extendedReview.procedureId)
|
|
6385
|
+
);
|
|
6386
|
+
});
|
|
6387
|
+
}
|
|
6378
6388
|
await Promise.all(updatePromises);
|
|
6379
6389
|
console.log(
|
|
6380
6390
|
`[ReviewsAggregationService] Successfully processed review: ${review.id}`
|
|
@@ -6417,6 +6427,20 @@ var ReviewsAggregationService = class {
|
|
|
6417
6427
|
)
|
|
6418
6428
|
);
|
|
6419
6429
|
}
|
|
6430
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6431
|
+
console.log(
|
|
6432
|
+
`[ReviewsAggregationService] Processing deletion of ${review.extendedProcedureReviews.length} extended procedure reviews`
|
|
6433
|
+
);
|
|
6434
|
+
review.extendedProcedureReviews.forEach((extendedReview) => {
|
|
6435
|
+
updatePromises.push(
|
|
6436
|
+
this.updateProcedureReviewInfo(
|
|
6437
|
+
extendedReview.procedureId,
|
|
6438
|
+
extendedReview,
|
|
6439
|
+
true
|
|
6440
|
+
)
|
|
6441
|
+
);
|
|
6442
|
+
});
|
|
6443
|
+
}
|
|
6420
6444
|
await Promise.all(updatePromises);
|
|
6421
6445
|
console.log(
|
|
6422
6446
|
`[ReviewsAggregationService] Successfully processed deleted review: ${review.id}`
|
|
@@ -6634,8 +6658,21 @@ var ReviewsAggregationService = class {
|
|
|
6634
6658
|
valueForMoney: 0,
|
|
6635
6659
|
recommendationPercentage: 0
|
|
6636
6660
|
};
|
|
6637
|
-
const
|
|
6638
|
-
|
|
6661
|
+
const allReviewsQuery = await this.db.collection(REVIEWS_COLLECTION).get();
|
|
6662
|
+
const reviews = allReviewsQuery.docs.map((doc) => doc.data());
|
|
6663
|
+
const procedureReviews = [];
|
|
6664
|
+
reviews.forEach((review) => {
|
|
6665
|
+
if (review.procedureReview && review.procedureReview.procedureId === procedureId) {
|
|
6666
|
+
procedureReviews.push(review.procedureReview);
|
|
6667
|
+
}
|
|
6668
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6669
|
+
const matchingExtended = review.extendedProcedureReviews.filter(
|
|
6670
|
+
(extReview) => extReview.procedureId === procedureId
|
|
6671
|
+
);
|
|
6672
|
+
procedureReviews.push(...matchingExtended);
|
|
6673
|
+
}
|
|
6674
|
+
});
|
|
6675
|
+
if (procedureReviews.length === 0) {
|
|
6639
6676
|
const updatedReviewInfo2 = {
|
|
6640
6677
|
totalReviews: 0,
|
|
6641
6678
|
averageRating: 0,
|
|
@@ -6655,8 +6692,6 @@ var ReviewsAggregationService = class {
|
|
|
6655
6692
|
);
|
|
6656
6693
|
return updatedReviewInfo2;
|
|
6657
6694
|
}
|
|
6658
|
-
const reviews = reviewsQuery.docs.map((doc) => doc.data());
|
|
6659
|
-
const procedureReviews = reviews.map((review) => review.procedureReview).filter((review) => review !== void 0);
|
|
6660
6695
|
let totalRating = 0;
|
|
6661
6696
|
let totalEffectivenessOfTreatment = 0;
|
|
6662
6697
|
let totalOutcomeExplanation = 0;
|
|
@@ -6750,10 +6785,16 @@ var ReviewsAggregationService = class {
|
|
|
6750
6785
|
if (review.procedureReview) {
|
|
6751
6786
|
review.procedureReview.isVerified = true;
|
|
6752
6787
|
}
|
|
6788
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6789
|
+
review.extendedProcedureReviews.forEach((extReview) => {
|
|
6790
|
+
extReview.isVerified = true;
|
|
6791
|
+
});
|
|
6792
|
+
}
|
|
6753
6793
|
batch.update(reviewRef, {
|
|
6754
6794
|
clinicReview: review.clinicReview,
|
|
6755
6795
|
practitionerReview: review.practitionerReview,
|
|
6756
6796
|
procedureReview: review.procedureReview,
|
|
6797
|
+
extendedProcedureReviews: review.extendedProcedureReviews,
|
|
6757
6798
|
updatedAt: admin13.firestore.FieldValue.serverTimestamp()
|
|
6758
6799
|
});
|
|
6759
6800
|
await batch.commit();
|
package/dist/admin/index.mjs
CHANGED
|
@@ -6313,6 +6313,16 @@ var ReviewsAggregationService = class {
|
|
|
6313
6313
|
this.updateProcedureReviewInfo(review.procedureReview.procedureId)
|
|
6314
6314
|
);
|
|
6315
6315
|
}
|
|
6316
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6317
|
+
console.log(
|
|
6318
|
+
`[ReviewsAggregationService] Processing ${review.extendedProcedureReviews.length} extended procedure reviews`
|
|
6319
|
+
);
|
|
6320
|
+
review.extendedProcedureReviews.forEach((extendedReview) => {
|
|
6321
|
+
updatePromises.push(
|
|
6322
|
+
this.updateProcedureReviewInfo(extendedReview.procedureId)
|
|
6323
|
+
);
|
|
6324
|
+
});
|
|
6325
|
+
}
|
|
6316
6326
|
await Promise.all(updatePromises);
|
|
6317
6327
|
console.log(
|
|
6318
6328
|
`[ReviewsAggregationService] Successfully processed review: ${review.id}`
|
|
@@ -6355,6 +6365,20 @@ var ReviewsAggregationService = class {
|
|
|
6355
6365
|
)
|
|
6356
6366
|
);
|
|
6357
6367
|
}
|
|
6368
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6369
|
+
console.log(
|
|
6370
|
+
`[ReviewsAggregationService] Processing deletion of ${review.extendedProcedureReviews.length} extended procedure reviews`
|
|
6371
|
+
);
|
|
6372
|
+
review.extendedProcedureReviews.forEach((extendedReview) => {
|
|
6373
|
+
updatePromises.push(
|
|
6374
|
+
this.updateProcedureReviewInfo(
|
|
6375
|
+
extendedReview.procedureId,
|
|
6376
|
+
extendedReview,
|
|
6377
|
+
true
|
|
6378
|
+
)
|
|
6379
|
+
);
|
|
6380
|
+
});
|
|
6381
|
+
}
|
|
6358
6382
|
await Promise.all(updatePromises);
|
|
6359
6383
|
console.log(
|
|
6360
6384
|
`[ReviewsAggregationService] Successfully processed deleted review: ${review.id}`
|
|
@@ -6572,8 +6596,21 @@ var ReviewsAggregationService = class {
|
|
|
6572
6596
|
valueForMoney: 0,
|
|
6573
6597
|
recommendationPercentage: 0
|
|
6574
6598
|
};
|
|
6575
|
-
const
|
|
6576
|
-
|
|
6599
|
+
const allReviewsQuery = await this.db.collection(REVIEWS_COLLECTION).get();
|
|
6600
|
+
const reviews = allReviewsQuery.docs.map((doc) => doc.data());
|
|
6601
|
+
const procedureReviews = [];
|
|
6602
|
+
reviews.forEach((review) => {
|
|
6603
|
+
if (review.procedureReview && review.procedureReview.procedureId === procedureId) {
|
|
6604
|
+
procedureReviews.push(review.procedureReview);
|
|
6605
|
+
}
|
|
6606
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6607
|
+
const matchingExtended = review.extendedProcedureReviews.filter(
|
|
6608
|
+
(extReview) => extReview.procedureId === procedureId
|
|
6609
|
+
);
|
|
6610
|
+
procedureReviews.push(...matchingExtended);
|
|
6611
|
+
}
|
|
6612
|
+
});
|
|
6613
|
+
if (procedureReviews.length === 0) {
|
|
6577
6614
|
const updatedReviewInfo2 = {
|
|
6578
6615
|
totalReviews: 0,
|
|
6579
6616
|
averageRating: 0,
|
|
@@ -6593,8 +6630,6 @@ var ReviewsAggregationService = class {
|
|
|
6593
6630
|
);
|
|
6594
6631
|
return updatedReviewInfo2;
|
|
6595
6632
|
}
|
|
6596
|
-
const reviews = reviewsQuery.docs.map((doc) => doc.data());
|
|
6597
|
-
const procedureReviews = reviews.map((review) => review.procedureReview).filter((review) => review !== void 0);
|
|
6598
6633
|
let totalRating = 0;
|
|
6599
6634
|
let totalEffectivenessOfTreatment = 0;
|
|
6600
6635
|
let totalOutcomeExplanation = 0;
|
|
@@ -6688,10 +6723,16 @@ var ReviewsAggregationService = class {
|
|
|
6688
6723
|
if (review.procedureReview) {
|
|
6689
6724
|
review.procedureReview.isVerified = true;
|
|
6690
6725
|
}
|
|
6726
|
+
if (review.extendedProcedureReviews && review.extendedProcedureReviews.length > 0) {
|
|
6727
|
+
review.extendedProcedureReviews.forEach((extReview) => {
|
|
6728
|
+
extReview.isVerified = true;
|
|
6729
|
+
});
|
|
6730
|
+
}
|
|
6691
6731
|
batch.update(reviewRef, {
|
|
6692
6732
|
clinicReview: review.clinicReview,
|
|
6693
6733
|
practitionerReview: review.practitionerReview,
|
|
6694
6734
|
procedureReview: review.procedureReview,
|
|
6735
|
+
extendedProcedureReviews: review.extendedProcedureReviews,
|
|
6695
6736
|
updatedAt: admin13.firestore.FieldValue.serverTimestamp()
|
|
6696
6737
|
});
|
|
6697
6738
|
await batch.commit();
|
package/dist/index.d.mts
CHANGED
|
@@ -70,6 +70,7 @@ interface PractitionerReview extends BaseReview {
|
|
|
70
70
|
/**
|
|
71
71
|
* Procedure review interface
|
|
72
72
|
* @description Full review for a medical procedure
|
|
73
|
+
* Used for both main and extended procedures
|
|
73
74
|
*/
|
|
74
75
|
interface ProcedureReview extends BaseReview {
|
|
75
76
|
procedureId: string;
|
|
@@ -138,6 +139,7 @@ interface Review {
|
|
|
138
139
|
clinicReview?: ClinicReview;
|
|
139
140
|
practitionerReview?: PractitionerReview;
|
|
140
141
|
procedureReview?: ProcedureReview;
|
|
142
|
+
extendedProcedureReviews?: ProcedureReview[];
|
|
141
143
|
overallComment: string;
|
|
142
144
|
overallRating: number;
|
|
143
145
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ interface PractitionerReview extends BaseReview {
|
|
|
70
70
|
/**
|
|
71
71
|
* Procedure review interface
|
|
72
72
|
* @description Full review for a medical procedure
|
|
73
|
+
* Used for both main and extended procedures
|
|
73
74
|
*/
|
|
74
75
|
interface ProcedureReview extends BaseReview {
|
|
75
76
|
procedureId: string;
|
|
@@ -138,6 +139,7 @@ interface Review {
|
|
|
138
139
|
clinicReview?: ClinicReview;
|
|
139
140
|
practitionerReview?: PractitionerReview;
|
|
140
141
|
procedureReview?: ProcedureReview;
|
|
142
|
+
extendedProcedureReviews?: ProcedureReview[];
|
|
141
143
|
overallComment: string;
|
|
142
144
|
overallRating: number;
|
|
143
145
|
}
|
package/dist/index.js
CHANGED
|
@@ -4696,6 +4696,7 @@ var reviewSchema = import_zod8.z.object({
|
|
|
4696
4696
|
clinicReview: clinicReviewSchema.optional(),
|
|
4697
4697
|
practitionerReview: practitionerReviewSchema.optional(),
|
|
4698
4698
|
procedureReview: procedureReviewSchema.optional(),
|
|
4699
|
+
extendedProcedureReviews: import_zod8.z.array(procedureReviewSchema).optional(),
|
|
4699
4700
|
overallComment: import_zod8.z.string().min(1).max(2e3),
|
|
4700
4701
|
overallRating: import_zod8.z.number().min(1).max(5)
|
|
4701
4702
|
});
|
|
@@ -4704,13 +4705,14 @@ var createReviewSchema = import_zod8.z.object({
|
|
|
4704
4705
|
clinicReview: createClinicReviewSchema.optional(),
|
|
4705
4706
|
practitionerReview: createPractitionerReviewSchema.optional(),
|
|
4706
4707
|
procedureReview: createProcedureReviewSchema.optional(),
|
|
4708
|
+
extendedProcedureReviews: import_zod8.z.array(createProcedureReviewSchema).optional(),
|
|
4707
4709
|
overallComment: import_zod8.z.string().min(1).max(2e3)
|
|
4708
4710
|
}).refine(
|
|
4709
4711
|
(data) => {
|
|
4710
|
-
return data.clinicReview || data.practitionerReview || data.procedureReview;
|
|
4712
|
+
return data.clinicReview || data.practitionerReview || data.procedureReview || data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0;
|
|
4711
4713
|
},
|
|
4712
4714
|
{
|
|
4713
|
-
message: "At least one review type (clinic, practitioner, or procedure) must be provided",
|
|
4715
|
+
message: "At least one review type (clinic, practitioner, procedure, or extended procedure) must be provided",
|
|
4714
4716
|
path: ["reviewType"]
|
|
4715
4717
|
}
|
|
4716
4718
|
);
|
|
@@ -17658,16 +17660,17 @@ var ReviewService = class extends BaseService {
|
|
|
17658
17660
|
* @returns The created review
|
|
17659
17661
|
*/
|
|
17660
17662
|
async createReview(data, appointmentId) {
|
|
17661
|
-
var _a, _b, _c, _d, _e, _f;
|
|
17663
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
17662
17664
|
try {
|
|
17663
17665
|
console.log("\u{1F50D} ReviewService.createReview - Input data:", {
|
|
17664
17666
|
appointmentId,
|
|
17665
17667
|
hasClinicReview: !!data.clinicReview,
|
|
17666
17668
|
hasPractitionerReview: !!data.practitionerReview,
|
|
17667
17669
|
hasProcedureReview: !!data.procedureReview,
|
|
17668
|
-
|
|
17669
|
-
|
|
17670
|
-
|
|
17670
|
+
extendedProcedureReviewsCount: ((_a = data.extendedProcedureReviews) == null ? void 0 : _a.length) || 0,
|
|
17671
|
+
practitionerId: (_b = data.practitionerReview) == null ? void 0 : _b.practitionerId,
|
|
17672
|
+
clinicId: (_c = data.clinicReview) == null ? void 0 : _c.clinicId,
|
|
17673
|
+
procedureId: (_d = data.procedureReview) == null ? void 0 : _d.procedureId
|
|
17671
17674
|
});
|
|
17672
17675
|
const validatedData = createReviewSchema.parse(data);
|
|
17673
17676
|
const ratings = [];
|
|
@@ -17707,6 +17710,20 @@ var ReviewService = class extends BaseService {
|
|
|
17707
17710
|
data.procedureReview.overallRating = procedureAverage;
|
|
17708
17711
|
ratings.push(procedureAverage);
|
|
17709
17712
|
}
|
|
17713
|
+
if (data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0) {
|
|
17714
|
+
data.extendedProcedureReviews.forEach((extendedReview) => {
|
|
17715
|
+
const extendedRatings = [
|
|
17716
|
+
extendedReview.effectivenessOfTreatment,
|
|
17717
|
+
extendedReview.outcomeExplanation,
|
|
17718
|
+
extendedReview.painManagement,
|
|
17719
|
+
extendedReview.followUpCare,
|
|
17720
|
+
extendedReview.valueForMoney
|
|
17721
|
+
];
|
|
17722
|
+
const extendedAverage = this.calculateAverage(extendedRatings);
|
|
17723
|
+
extendedReview.overallRating = extendedAverage;
|
|
17724
|
+
ratings.push(extendedAverage);
|
|
17725
|
+
});
|
|
17726
|
+
}
|
|
17710
17727
|
const overallRating = this.calculateAverage(ratings);
|
|
17711
17728
|
const reviewId = this.generateId();
|
|
17712
17729
|
if (data.clinicReview) {
|
|
@@ -17722,6 +17739,14 @@ var ReviewService = class extends BaseService {
|
|
|
17722
17739
|
data.procedureReview.fullReviewId = reviewId;
|
|
17723
17740
|
}
|
|
17724
17741
|
const now = /* @__PURE__ */ new Date();
|
|
17742
|
+
if (data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0) {
|
|
17743
|
+
data.extendedProcedureReviews.forEach((extendedReview) => {
|
|
17744
|
+
extendedReview.id = this.generateId();
|
|
17745
|
+
extendedReview.fullReviewId = reviewId;
|
|
17746
|
+
extendedReview.createdAt = now;
|
|
17747
|
+
extendedReview.updatedAt = now;
|
|
17748
|
+
});
|
|
17749
|
+
}
|
|
17725
17750
|
const review = {
|
|
17726
17751
|
id: reviewId,
|
|
17727
17752
|
appointmentId,
|
|
@@ -17729,6 +17754,7 @@ var ReviewService = class extends BaseService {
|
|
|
17729
17754
|
clinicReview: data.clinicReview,
|
|
17730
17755
|
practitionerReview: data.practitionerReview,
|
|
17731
17756
|
procedureReview: data.procedureReview,
|
|
17757
|
+
extendedProcedureReviews: data.extendedProcedureReviews,
|
|
17732
17758
|
overallComment: data.overallComment,
|
|
17733
17759
|
overallRating,
|
|
17734
17760
|
createdAt: now,
|
|
@@ -17743,9 +17769,10 @@ var ReviewService = class extends BaseService {
|
|
|
17743
17769
|
});
|
|
17744
17770
|
console.log("\u2705 ReviewService.createReview - Review saved to Firestore:", {
|
|
17745
17771
|
reviewId,
|
|
17746
|
-
practitionerId: (
|
|
17747
|
-
clinicId: (
|
|
17748
|
-
procedureId: (
|
|
17772
|
+
practitionerId: (_e = review.practitionerReview) == null ? void 0 : _e.practitionerId,
|
|
17773
|
+
clinicId: (_f = review.clinicReview) == null ? void 0 : _f.clinicId,
|
|
17774
|
+
procedureId: (_g = review.procedureReview) == null ? void 0 : _g.procedureId,
|
|
17775
|
+
extendedProcedureReviewsCount: ((_h = review.extendedProcedureReviews) == null ? void 0 : _h.length) || 0
|
|
17749
17776
|
});
|
|
17750
17777
|
return review;
|
|
17751
17778
|
} catch (error) {
|
|
@@ -17761,7 +17788,7 @@ var ReviewService = class extends BaseService {
|
|
|
17761
17788
|
* @returns The review with entity names if found, null otherwise
|
|
17762
17789
|
*/
|
|
17763
17790
|
async getReview(reviewId) {
|
|
17764
|
-
var _a, _b, _c;
|
|
17791
|
+
var _a, _b, _c, _d, _e;
|
|
17765
17792
|
console.log("\u{1F50D} ReviewService.getReview - Getting review:", reviewId);
|
|
17766
17793
|
const docRef = (0, import_firestore56.doc)(this.db, REVIEWS_COLLECTION, reviewId);
|
|
17767
17794
|
const docSnap = await (0, import_firestore56.getDoc)(docRef);
|
|
@@ -17795,12 +17822,27 @@ var ReviewService = class extends BaseService {
|
|
|
17795
17822
|
procedureName: appointment.procedureInfo.name
|
|
17796
17823
|
};
|
|
17797
17824
|
}
|
|
17825
|
+
if (enhancedReview.extendedProcedureReviews && enhancedReview.extendedProcedureReviews.length > 0) {
|
|
17826
|
+
const extendedProcedures = ((_a = appointment.metadata) == null ? void 0 : _a.extendedProcedures) || [];
|
|
17827
|
+
enhancedReview.extendedProcedureReviews = enhancedReview.extendedProcedureReviews.map((extendedReview) => {
|
|
17828
|
+
const procedureInfo = extendedProcedures.find(
|
|
17829
|
+
(ep) => ep.procedureId === extendedReview.procedureId
|
|
17830
|
+
);
|
|
17831
|
+
if (procedureInfo) {
|
|
17832
|
+
return {
|
|
17833
|
+
...extendedReview,
|
|
17834
|
+
procedureName: procedureInfo.procedureName
|
|
17835
|
+
};
|
|
17836
|
+
}
|
|
17837
|
+
return extendedReview;
|
|
17838
|
+
});
|
|
17839
|
+
}
|
|
17798
17840
|
if (appointment.patientInfo) {
|
|
17799
17841
|
enhancedReview.patientName = appointment.patientInfo.fullName;
|
|
17800
17842
|
}
|
|
17801
17843
|
console.log("\u2705 ReviewService.getReview - Enhanced review:", {
|
|
17802
17844
|
reviewId,
|
|
17803
|
-
hasEntityNames: !!(((
|
|
17845
|
+
hasEntityNames: !!(((_b = enhancedReview.clinicReview) == null ? void 0 : _b.clinicName) || ((_c = enhancedReview.practitionerReview) == null ? void 0 : _c.practitionerName) || ((_d = enhancedReview.procedureReview) == null ? void 0 : _d.procedureName) || enhancedReview.patientName || ((_e = enhancedReview.extendedProcedureReviews) == null ? void 0 : _e.some((epr) => epr.procedureName)))
|
|
17804
17846
|
});
|
|
17805
17847
|
return enhancedReview;
|
|
17806
17848
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -4669,6 +4669,7 @@ var reviewSchema = z8.object({
|
|
|
4669
4669
|
clinicReview: clinicReviewSchema.optional(),
|
|
4670
4670
|
practitionerReview: practitionerReviewSchema.optional(),
|
|
4671
4671
|
procedureReview: procedureReviewSchema.optional(),
|
|
4672
|
+
extendedProcedureReviews: z8.array(procedureReviewSchema).optional(),
|
|
4672
4673
|
overallComment: z8.string().min(1).max(2e3),
|
|
4673
4674
|
overallRating: z8.number().min(1).max(5)
|
|
4674
4675
|
});
|
|
@@ -4677,13 +4678,14 @@ var createReviewSchema = z8.object({
|
|
|
4677
4678
|
clinicReview: createClinicReviewSchema.optional(),
|
|
4678
4679
|
practitionerReview: createPractitionerReviewSchema.optional(),
|
|
4679
4680
|
procedureReview: createProcedureReviewSchema.optional(),
|
|
4681
|
+
extendedProcedureReviews: z8.array(createProcedureReviewSchema).optional(),
|
|
4680
4682
|
overallComment: z8.string().min(1).max(2e3)
|
|
4681
4683
|
}).refine(
|
|
4682
4684
|
(data) => {
|
|
4683
|
-
return data.clinicReview || data.practitionerReview || data.procedureReview;
|
|
4685
|
+
return data.clinicReview || data.practitionerReview || data.procedureReview || data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0;
|
|
4684
4686
|
},
|
|
4685
4687
|
{
|
|
4686
|
-
message: "At least one review type (clinic, practitioner, or procedure) must be provided",
|
|
4688
|
+
message: "At least one review type (clinic, practitioner, procedure, or extended procedure) must be provided",
|
|
4687
4689
|
path: ["reviewType"]
|
|
4688
4690
|
}
|
|
4689
4691
|
);
|
|
@@ -17916,16 +17918,17 @@ var ReviewService = class extends BaseService {
|
|
|
17916
17918
|
* @returns The created review
|
|
17917
17919
|
*/
|
|
17918
17920
|
async createReview(data, appointmentId) {
|
|
17919
|
-
var _a, _b, _c, _d, _e, _f;
|
|
17921
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
17920
17922
|
try {
|
|
17921
17923
|
console.log("\u{1F50D} ReviewService.createReview - Input data:", {
|
|
17922
17924
|
appointmentId,
|
|
17923
17925
|
hasClinicReview: !!data.clinicReview,
|
|
17924
17926
|
hasPractitionerReview: !!data.practitionerReview,
|
|
17925
17927
|
hasProcedureReview: !!data.procedureReview,
|
|
17926
|
-
|
|
17927
|
-
|
|
17928
|
-
|
|
17928
|
+
extendedProcedureReviewsCount: ((_a = data.extendedProcedureReviews) == null ? void 0 : _a.length) || 0,
|
|
17929
|
+
practitionerId: (_b = data.practitionerReview) == null ? void 0 : _b.practitionerId,
|
|
17930
|
+
clinicId: (_c = data.clinicReview) == null ? void 0 : _c.clinicId,
|
|
17931
|
+
procedureId: (_d = data.procedureReview) == null ? void 0 : _d.procedureId
|
|
17929
17932
|
});
|
|
17930
17933
|
const validatedData = createReviewSchema.parse(data);
|
|
17931
17934
|
const ratings = [];
|
|
@@ -17965,6 +17968,20 @@ var ReviewService = class extends BaseService {
|
|
|
17965
17968
|
data.procedureReview.overallRating = procedureAverage;
|
|
17966
17969
|
ratings.push(procedureAverage);
|
|
17967
17970
|
}
|
|
17971
|
+
if (data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0) {
|
|
17972
|
+
data.extendedProcedureReviews.forEach((extendedReview) => {
|
|
17973
|
+
const extendedRatings = [
|
|
17974
|
+
extendedReview.effectivenessOfTreatment,
|
|
17975
|
+
extendedReview.outcomeExplanation,
|
|
17976
|
+
extendedReview.painManagement,
|
|
17977
|
+
extendedReview.followUpCare,
|
|
17978
|
+
extendedReview.valueForMoney
|
|
17979
|
+
];
|
|
17980
|
+
const extendedAverage = this.calculateAverage(extendedRatings);
|
|
17981
|
+
extendedReview.overallRating = extendedAverage;
|
|
17982
|
+
ratings.push(extendedAverage);
|
|
17983
|
+
});
|
|
17984
|
+
}
|
|
17968
17985
|
const overallRating = this.calculateAverage(ratings);
|
|
17969
17986
|
const reviewId = this.generateId();
|
|
17970
17987
|
if (data.clinicReview) {
|
|
@@ -17980,6 +17997,14 @@ var ReviewService = class extends BaseService {
|
|
|
17980
17997
|
data.procedureReview.fullReviewId = reviewId;
|
|
17981
17998
|
}
|
|
17982
17999
|
const now = /* @__PURE__ */ new Date();
|
|
18000
|
+
if (data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0) {
|
|
18001
|
+
data.extendedProcedureReviews.forEach((extendedReview) => {
|
|
18002
|
+
extendedReview.id = this.generateId();
|
|
18003
|
+
extendedReview.fullReviewId = reviewId;
|
|
18004
|
+
extendedReview.createdAt = now;
|
|
18005
|
+
extendedReview.updatedAt = now;
|
|
18006
|
+
});
|
|
18007
|
+
}
|
|
17983
18008
|
const review = {
|
|
17984
18009
|
id: reviewId,
|
|
17985
18010
|
appointmentId,
|
|
@@ -17987,6 +18012,7 @@ var ReviewService = class extends BaseService {
|
|
|
17987
18012
|
clinicReview: data.clinicReview,
|
|
17988
18013
|
practitionerReview: data.practitionerReview,
|
|
17989
18014
|
procedureReview: data.procedureReview,
|
|
18015
|
+
extendedProcedureReviews: data.extendedProcedureReviews,
|
|
17990
18016
|
overallComment: data.overallComment,
|
|
17991
18017
|
overallRating,
|
|
17992
18018
|
createdAt: now,
|
|
@@ -18001,9 +18027,10 @@ var ReviewService = class extends BaseService {
|
|
|
18001
18027
|
});
|
|
18002
18028
|
console.log("\u2705 ReviewService.createReview - Review saved to Firestore:", {
|
|
18003
18029
|
reviewId,
|
|
18004
|
-
practitionerId: (
|
|
18005
|
-
clinicId: (
|
|
18006
|
-
procedureId: (
|
|
18030
|
+
practitionerId: (_e = review.practitionerReview) == null ? void 0 : _e.practitionerId,
|
|
18031
|
+
clinicId: (_f = review.clinicReview) == null ? void 0 : _f.clinicId,
|
|
18032
|
+
procedureId: (_g = review.procedureReview) == null ? void 0 : _g.procedureId,
|
|
18033
|
+
extendedProcedureReviewsCount: ((_h = review.extendedProcedureReviews) == null ? void 0 : _h.length) || 0
|
|
18007
18034
|
});
|
|
18008
18035
|
return review;
|
|
18009
18036
|
} catch (error) {
|
|
@@ -18019,7 +18046,7 @@ var ReviewService = class extends BaseService {
|
|
|
18019
18046
|
* @returns The review with entity names if found, null otherwise
|
|
18020
18047
|
*/
|
|
18021
18048
|
async getReview(reviewId) {
|
|
18022
|
-
var _a, _b, _c;
|
|
18049
|
+
var _a, _b, _c, _d, _e;
|
|
18023
18050
|
console.log("\u{1F50D} ReviewService.getReview - Getting review:", reviewId);
|
|
18024
18051
|
const docRef = doc37(this.db, REVIEWS_COLLECTION, reviewId);
|
|
18025
18052
|
const docSnap = await getDoc38(docRef);
|
|
@@ -18053,12 +18080,27 @@ var ReviewService = class extends BaseService {
|
|
|
18053
18080
|
procedureName: appointment.procedureInfo.name
|
|
18054
18081
|
};
|
|
18055
18082
|
}
|
|
18083
|
+
if (enhancedReview.extendedProcedureReviews && enhancedReview.extendedProcedureReviews.length > 0) {
|
|
18084
|
+
const extendedProcedures = ((_a = appointment.metadata) == null ? void 0 : _a.extendedProcedures) || [];
|
|
18085
|
+
enhancedReview.extendedProcedureReviews = enhancedReview.extendedProcedureReviews.map((extendedReview) => {
|
|
18086
|
+
const procedureInfo = extendedProcedures.find(
|
|
18087
|
+
(ep) => ep.procedureId === extendedReview.procedureId
|
|
18088
|
+
);
|
|
18089
|
+
if (procedureInfo) {
|
|
18090
|
+
return {
|
|
18091
|
+
...extendedReview,
|
|
18092
|
+
procedureName: procedureInfo.procedureName
|
|
18093
|
+
};
|
|
18094
|
+
}
|
|
18095
|
+
return extendedReview;
|
|
18096
|
+
});
|
|
18097
|
+
}
|
|
18056
18098
|
if (appointment.patientInfo) {
|
|
18057
18099
|
enhancedReview.patientName = appointment.patientInfo.fullName;
|
|
18058
18100
|
}
|
|
18059
18101
|
console.log("\u2705 ReviewService.getReview - Enhanced review:", {
|
|
18060
18102
|
reviewId,
|
|
18061
|
-
hasEntityNames: !!(((
|
|
18103
|
+
hasEntityNames: !!(((_b = enhancedReview.clinicReview) == null ? void 0 : _b.clinicName) || ((_c = enhancedReview.practitionerReview) == null ? void 0 : _c.practitionerName) || ((_d = enhancedReview.procedureReview) == null ? void 0 : _d.procedureName) || enhancedReview.patientName || ((_e = enhancedReview.extendedProcedureReviews) == null ? void 0 : _e.some((epr) => epr.procedureName)))
|
|
18062
18104
|
});
|
|
18063
18105
|
return enhancedReview;
|
|
18064
18106
|
}
|