@blackcode_sa/metaestetics-api 1.12.59 → 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 +38 -4
- package/dist/admin/index.d.ts +38 -4
- package/dist/admin/index.js +192 -30
- package/dist/admin/index.mjs +192 -30
- package/dist/index.d.mts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +53 -11
- package/dist/index.mjs +53 -11
- package/package.json +5 -5
- package/src/admin/aggregation/appointment/appointment.aggregation.service.ts +183 -28
- package/src/admin/aggregation/reviews/reviews.aggregation.service.ts +59 -11
- package/src/services/reviews/reviews.service.ts +48 -1
- package/src/types/patient/patient-requirements.ts +11 -0
- package/src/types/reviews/index.ts +3 -1
- package/src/validations/patient/patient-requirements.schema.ts +9 -0
- package/src/validations/reviews.schema.ts +8 -2
|
@@ -51,6 +51,7 @@ export interface PractitionerReview extends BaseReview {
|
|
|
51
51
|
/**
|
|
52
52
|
* Procedure review interface
|
|
53
53
|
* @description Full review for a medical procedure
|
|
54
|
+
* Used for both main and extended procedures
|
|
54
55
|
*/
|
|
55
56
|
export interface ProcedureReview extends BaseReview {
|
|
56
57
|
procedureId: string;
|
|
@@ -122,7 +123,8 @@ export interface Review {
|
|
|
122
123
|
updatedAt: Date;
|
|
123
124
|
clinicReview?: ClinicReview;
|
|
124
125
|
practitionerReview?: PractitionerReview;
|
|
125
|
-
procedureReview?: ProcedureReview;
|
|
126
|
+
procedureReview?: ProcedureReview; // Review for the main/default procedure
|
|
127
|
+
extendedProcedureReviews?: ProcedureReview[]; // Reviews for extended procedures (same structure as main)
|
|
126
128
|
overallComment: string;
|
|
127
129
|
overallRating: number; // Average of all available ratings
|
|
128
130
|
}
|
|
@@ -43,6 +43,14 @@ export const patientRequirementOverallStatusSchema = z.nativeEnum(
|
|
|
43
43
|
*/
|
|
44
44
|
export const requirementImportanceSchema = z.enum(["low", "medium", "high"]);
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Zod schema for `RequirementSourceProcedure` interface.
|
|
48
|
+
*/
|
|
49
|
+
export const requirementSourceProcedureSchema = z.object({
|
|
50
|
+
procedureId: z.string().min(1, "Procedure ID is required."),
|
|
51
|
+
procedureName: z.string().min(1, "Procedure name is required."),
|
|
52
|
+
});
|
|
53
|
+
|
|
46
54
|
/**
|
|
47
55
|
* Zod schema for `PatientRequirementInstance` interface.
|
|
48
56
|
*/
|
|
@@ -61,6 +69,7 @@ export const patientRequirementInstanceSchema = z.object({
|
|
|
61
69
|
instructions: z
|
|
62
70
|
.array(patientRequirementInstructionSchema)
|
|
63
71
|
.min(1, "At least one instruction is required."),
|
|
72
|
+
sourceProcedures: z.array(requirementSourceProcedureSchema).optional(),
|
|
64
73
|
createdAt: z.any(), // Firestore Timestamp
|
|
65
74
|
updatedAt: z.any(), // Firestore Timestamp
|
|
66
75
|
});
|
|
@@ -105,6 +105,7 @@ export const createProcedureReviewSchema = baseReviewCreateSchema.extend({
|
|
|
105
105
|
wouldRecommend: z.boolean(),
|
|
106
106
|
});
|
|
107
107
|
|
|
108
|
+
|
|
108
109
|
/**
|
|
109
110
|
* Review info (condensed) schema for clinic
|
|
110
111
|
*/
|
|
@@ -159,6 +160,7 @@ export const reviewSchema = z.object({
|
|
|
159
160
|
clinicReview: clinicReviewSchema.optional(),
|
|
160
161
|
practitionerReview: practitionerReviewSchema.optional(),
|
|
161
162
|
procedureReview: procedureReviewSchema.optional(),
|
|
163
|
+
extendedProcedureReviews: z.array(procedureReviewSchema).optional(),
|
|
162
164
|
overallComment: z.string().min(1).max(2000),
|
|
163
165
|
overallRating: z.number().min(1).max(5),
|
|
164
166
|
});
|
|
@@ -172,18 +174,22 @@ export const createReviewSchema = z
|
|
|
172
174
|
clinicReview: createClinicReviewSchema.optional(),
|
|
173
175
|
practitionerReview: createPractitionerReviewSchema.optional(),
|
|
174
176
|
procedureReview: createProcedureReviewSchema.optional(),
|
|
177
|
+
extendedProcedureReviews: z.array(createProcedureReviewSchema).optional(),
|
|
175
178
|
overallComment: z.string().min(1).max(2000),
|
|
176
179
|
})
|
|
177
180
|
.refine(
|
|
178
181
|
(data) => {
|
|
179
182
|
// Ensure at least one review type is provided
|
|
180
183
|
return (
|
|
181
|
-
data.clinicReview ||
|
|
184
|
+
data.clinicReview ||
|
|
185
|
+
data.practitionerReview ||
|
|
186
|
+
data.procedureReview ||
|
|
187
|
+
(data.extendedProcedureReviews && data.extendedProcedureReviews.length > 0)
|
|
182
188
|
);
|
|
183
189
|
},
|
|
184
190
|
{
|
|
185
191
|
message:
|
|
186
|
-
"At least one review type (clinic, practitioner, or procedure) must be provided",
|
|
192
|
+
"At least one review type (clinic, practitioner, procedure, or extended procedure) must be provided",
|
|
187
193
|
path: ["reviewType"],
|
|
188
194
|
}
|
|
189
195
|
);
|