@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.
@@ -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 || data.practitionerReview || data.procedureReview
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
  );