@blackcode_sa/metaestetics-api 1.6.3 → 1.6.4

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.
Files changed (34) hide show
  1. package/dist/admin/index.d.mts +228 -25
  2. package/dist/admin/index.d.ts +228 -25
  3. package/dist/admin/index.js +35867 -2493
  4. package/dist/admin/index.mjs +35856 -2464
  5. package/dist/backoffice/index.d.mts +252 -1
  6. package/dist/backoffice/index.d.ts +252 -1
  7. package/dist/backoffice/index.js +86 -12
  8. package/dist/backoffice/index.mjs +86 -13
  9. package/dist/index.d.mts +1400 -554
  10. package/dist/index.d.ts +1400 -554
  11. package/dist/index.js +1325 -683
  12. package/dist/index.mjs +1358 -710
  13. package/package.json +1 -1
  14. package/src/admin/index.ts +15 -1
  15. package/src/admin/notifications/notifications.admin.ts +1 -1
  16. package/src/admin/requirements/README.md +128 -0
  17. package/src/admin/requirements/patient-requirements.admin.service.ts +482 -0
  18. package/src/index.ts +16 -1
  19. package/src/services/appointment/appointment.service.ts +315 -86
  20. package/src/services/clinic/clinic-admin.service.ts +3 -0
  21. package/src/services/clinic/clinic-group.service.ts +8 -0
  22. package/src/services/documentation-templates/documentation-template.service.ts +24 -16
  23. package/src/services/documentation-templates/filled-document.service.ts +253 -136
  24. package/src/services/patient/patientRequirements.service.ts +285 -0
  25. package/src/types/appointment/index.ts +134 -10
  26. package/src/types/documentation-templates/index.ts +34 -2
  27. package/src/types/notifications/README.md +77 -0
  28. package/src/types/notifications/index.ts +154 -27
  29. package/src/types/patient/patient-requirements.ts +81 -0
  30. package/src/validations/appointment.schema.ts +300 -62
  31. package/src/validations/documentation-templates/template.schema.ts +55 -0
  32. package/src/validations/documentation-templates.schema.ts +9 -14
  33. package/src/validations/notification.schema.ts +3 -3
  34. package/src/validations/patient/patient-requirements.schema.ts +75 -0
package/dist/index.d.ts CHANGED
@@ -376,6 +376,7 @@ declare enum DocumentElementType {
376
376
  TEXT_INPUT = "text_input",
377
377
  DATE_PICKER = "date_picker",
378
378
  SIGNATURE = "signature",
379
+ DITIGAL_SIGNATURE = "digital_signature",
379
380
  FILE_UPLOAD = "file_upload"
380
381
  }
381
382
  /**
@@ -405,7 +406,12 @@ declare enum DynamicVariable {
405
406
  CLINIC_NAME = "[CLINIC_NAME]",
406
407
  PATIENT_BIRTHDAY = "[PATIENT_BIRTHDAY]",
407
408
  APPOINTMENT_DATE = "[APPOINTMENT_DATE]",
408
- CURRENT_DATE = "[CURRENT_DATE]"
409
+ CURRENT_DATE = "[CURRENT_DATE]",
410
+ PROCEDURE_NAME = "[PROCEDURE_NAME]",
411
+ PROCEDURE_DESCRIPTION = "[PROCEDURE_DESCRIPTION]",
412
+ PROCEDURE_COST = "[PROCEDURE_COST]",
413
+ PROCEDURE_DURATION = "[PROCEDURE_DURATION]",
414
+ PROCEDURE_RISK = "[PROCEDURE_RISK]"
409
415
  }
410
416
  /**
411
417
  * Base interface for all document elements
@@ -534,6 +540,9 @@ interface DocumentTemplate {
534
540
  createdBy: string;
535
541
  elements: DocumentElement[];
536
542
  tags?: string[];
543
+ isUserForm?: boolean;
544
+ isRequired?: boolean;
545
+ sortingOrder?: number;
537
546
  version: number;
538
547
  isActive: boolean;
539
548
  }
@@ -545,6 +554,9 @@ interface CreateDocumentTemplateData {
545
554
  description?: string;
546
555
  elements: Omit<DocumentElement, "id">[];
547
556
  tags?: string[];
557
+ isUserForm?: boolean;
558
+ isRequired?: boolean;
559
+ sortingOrder?: number;
548
560
  }
549
561
  /**
550
562
  * Interface for updating an existing document template
@@ -555,6 +567,9 @@ interface UpdateDocumentTemplateData {
555
567
  elements?: Omit<DocumentElement, "id">[];
556
568
  tags?: string[];
557
569
  isActive?: boolean;
570
+ isUserForm?: boolean;
571
+ isRequired?: boolean;
572
+ sortingOrder?: number;
558
573
  }
559
574
  /**
560
575
  * Interface for a filled document (completed form)
@@ -563,6 +578,10 @@ interface FilledDocument {
563
578
  id: string;
564
579
  templateId: string;
565
580
  templateVersion: number;
581
+ isUserForm: boolean;
582
+ isRequired: boolean;
583
+ procedureId: string;
584
+ appointmentId: string;
566
585
  patientId: string;
567
586
  practitionerId: string;
568
587
  clinicId: string;
@@ -578,8 +597,11 @@ interface FilledDocument {
578
597
  */
579
598
  declare enum FilledDocumentStatus {
580
599
  DRAFT = "draft",
581
- COMPLETED = "completed",
582
- SIGNED = "signed"
600
+ SKIPPED = "skipped",
601
+ PENDING = "pending",
602
+ COMPLETED = "completed",// When doctor or patient completes the form
603
+ SIGNED = "signed",// Only used for user forms
604
+ REJECTED = "rejected"
583
605
  }
584
606
 
585
607
  /**
@@ -1947,355 +1969,53 @@ interface PatientProfileInfo {
1947
1969
  }
1948
1970
 
1949
1971
  /**
1950
- * Enum defining the possible statuses of an appointment.
1951
- */
1952
- declare enum AppointmentStatus {
1953
- SCHEDULED = "scheduled",// Initial state after booking, before confirmation (if applicable)
1954
- CONFIRMED = "confirmed",// Confirmed by clinic/practitioner
1955
- CHECKED_IN = "checked_in",// Patient has arrived
1956
- IN_PROGRESS = "in_progress",// Procedure has started
1957
- COMPLETED = "completed",// Procedure finished successfully
1958
- CANCELED_PATIENT = "canceled_patient",// Canceled by the patient
1959
- CANCELED_CLINIC = "canceled_clinic",// Canceled by the clinic/practitioner
1960
- NO_SHOW = "no_show",// Patient did not attend
1961
- RESCHEDULED = "rescheduled"
1962
- }
1963
- /**
1964
- * Enum defining the payment status of an appointment.
1965
- */
1966
- declare enum PaymentStatus {
1967
- UNPAID = "unpaid",
1968
- PAID = "paid",
1969
- PARTIALLY_PAID = "partially_paid",
1970
- REFUNDED = "refunded",
1971
- NOT_APPLICABLE = "not_applicable"
1972
- }
1973
- /**
1974
- * Represents a booked appointment, aggregating key information and relevant procedure rules.
1975
- */
1976
- interface Appointment {
1977
- /** Unique identifier for the appointment */
1978
- id: string;
1979
- /** Reference to the associated CalendarEvent */
1980
- calendarEventId: string;
1981
- /** ID of the clinic branch */
1982
- clinicBranchId: string;
1983
- /** Aggregated clinic information (snapshot) */
1984
- clinicInfo: ClinicInfo;
1985
- /** ID of the practitioner */
1986
- practitionerId: string;
1987
- /** Aggregated practitioner information (snapshot) */
1988
- practitionerInfo: PractitionerProfileInfo;
1989
- /** ID of the patient */
1990
- patientId: string;
1991
- /** Aggregated patient information (snapshot) */
1992
- patientInfo: PatientProfileInfo;
1993
- /** ID of the procedure */
1994
- procedureId: string;
1995
- /** Aggregated procedure information including product/brand (snapshot) */
1996
- procedureInfo: ProcedureSummaryInfo;
1997
- /** Status of the appointment */
1998
- status: AppointmentStatus;
1999
- /** Timestamps */
2000
- bookingTime: Timestamp;
2001
- confirmationTime?: Timestamp | null;
2002
- appointmentStartTime: Timestamp;
2003
- appointmentEndTime: Timestamp;
2004
- actualDurationMinutes?: number;
2005
- /** Cancellation Details */
2006
- cancellationReason?: string | null;
2007
- canceledBy?: "patient" | "clinic" | "practitioner" | "system";
2008
- /** Notes */
2009
- internalNotes?: string | null;
2010
- patientNotes?: string | null;
2011
- /** Payment Details */
2012
- cost: number;
2013
- currency: Currency;
2014
- paymentStatus: PaymentStatus;
2015
- paymentTransactionId?: string | null;
2016
- /** Procedure-related conditions and requirements */
2017
- blockingConditions: BlockingCondition[];
2018
- contraindications: Contraindication[];
2019
- preProcedureRequirements: Requirement[];
2020
- postProcedureRequirements: Requirement[];
2021
- /** Tracking information for requirements completion */
2022
- completedPreRequirements?: string[];
2023
- completedPostRequirements?: string[];
2024
- /** Timestamps */
2025
- createdAt: Timestamp;
2026
- updatedAt: Timestamp;
2027
- /** Recurring appointment information */
2028
- isRecurring?: boolean;
2029
- recurringAppointmentId?: string | null;
2030
- }
2031
- /**
2032
- * Data needed to create a new Appointment
2033
- */
2034
- interface CreateAppointmentData {
2035
- calendarEventId: string;
2036
- clinicBranchId: string;
2037
- practitionerId: string;
2038
- patientId: string;
2039
- procedureId: string;
2040
- appointmentStartTime: Timestamp;
2041
- appointmentEndTime: Timestamp;
2042
- cost: number;
2043
- currency: Currency;
2044
- patientNotes?: string | null;
2045
- initialStatus: AppointmentStatus;
2046
- initialPaymentStatus?: PaymentStatus;
2047
- }
2048
- /**
2049
- * Data allowed for updating an Appointment
2050
- */
2051
- interface UpdateAppointmentData {
2052
- status?: AppointmentStatus;
2053
- confirmationTime?: Timestamp | null;
2054
- actualDurationMinutes?: number;
2055
- cancellationReason?: string | null;
2056
- canceledBy?: "patient" | "clinic" | "practitioner" | "system";
2057
- internalNotes?: string | null;
2058
- paymentStatus?: PaymentStatus;
2059
- paymentTransactionId?: string | null;
2060
- completedPreRequirements?: string[];
2061
- completedPostRequirements?: string[];
2062
- }
2063
- /**
2064
- * Parameters for searching appointments
1972
+ * Brend proizvoda ili opreme
1973
+ * Predstavlja proizvođača ili dobavljača proizvoda i opreme koja se koristi u procedurama
1974
+ *
1975
+ * @property id - Jedinstveni identifikator brenda
1976
+ * @property name - Naziv brenda
1977
+ * @property manufacturer - Naziv proizvođača
1978
+ * @property description - Detaljan opis brenda i njegovih proizvoda
1979
+ * @property website - Web stranica brenda
1980
+ * @property isActive - Da li je brend aktivan u sistemu
1981
+ * @property createdAt - Datum kreiranja
1982
+ * @property updatedAt - Datum poslednjeg ažuriranja
2065
1983
  */
2066
- interface SearchAppointmentsParams {
2067
- patientId?: string;
2068
- practitionerId?: string;
2069
- clinicBranchId?: string;
2070
- startDate?: Date;
2071
- endDate?: Date;
2072
- status?: AppointmentStatus | AppointmentStatus[];
2073
- limit?: number;
2074
- startAfter?: any;
1984
+ interface Brand {
1985
+ id?: string;
1986
+ name: string;
1987
+ manufacturer: string;
1988
+ createdAt: Date;
1989
+ updatedAt: Date;
1990
+ isActive: boolean;
1991
+ website?: string;
1992
+ description?: string;
2075
1993
  }
2076
- /** Firestore collection name */
2077
- declare const APPOINTMENTS_COLLECTION = "appointments";
2078
1994
 
2079
- /**
2080
- * Schema for validating appointment creation data
2081
- */
2082
- declare const createAppointmentSchema: z.ZodObject<{
2083
- calendarEventId: z.ZodString;
2084
- clinicBranchId: z.ZodString;
2085
- practitionerId: z.ZodString;
2086
- patientId: z.ZodString;
2087
- procedureId: z.ZodString;
2088
- appointmentStartTime: z.ZodEffects<z.ZodAny, any, any>;
2089
- appointmentEndTime: z.ZodEffects<z.ZodAny, any, any>;
2090
- cost: z.ZodNumber;
2091
- currency: z.ZodString;
2092
- patientNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2093
- initialStatus: z.ZodNativeEnum<typeof AppointmentStatus>;
2094
- initialPaymentStatus: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>>;
2095
- }, "strip", z.ZodTypeAny, {
2096
- patientId: string;
2097
- practitionerId: string;
2098
- calendarEventId: string;
2099
- clinicBranchId: string;
2100
- procedureId: string;
2101
- cost: number;
2102
- currency: string;
2103
- initialStatus: AppointmentStatus;
2104
- initialPaymentStatus: PaymentStatus;
2105
- appointmentStartTime?: any;
2106
- appointmentEndTime?: any;
2107
- patientNotes?: string | null | undefined;
1995
+ declare const documentElementSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<z.objectUtil.extendShape<{
1996
+ id: z.ZodOptional<z.ZodString>;
1997
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
1998
+ required: z.ZodOptional<z.ZodBoolean>;
2108
1999
  }, {
2109
- patientId: string;
2110
- practitionerId: string;
2111
- calendarEventId: string;
2112
- clinicBranchId: string;
2113
- procedureId: string;
2114
- cost: number;
2115
- currency: string;
2116
- initialStatus: AppointmentStatus;
2117
- appointmentStartTime?: any;
2118
- appointmentEndTime?: any;
2119
- patientNotes?: string | null | undefined;
2120
- initialPaymentStatus?: PaymentStatus | undefined;
2121
- }>;
2122
- /**
2123
- * Schema for validating appointment update data
2124
- */
2125
- declare const updateAppointmentSchema: z.ZodEffects<z.ZodObject<{
2126
- status: z.ZodOptional<z.ZodNativeEnum<typeof AppointmentStatus>>;
2127
- confirmationTime: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
2128
- actualDurationMinutes: z.ZodOptional<z.ZodNumber>;
2129
- cancellationReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2130
- canceledBy: z.ZodOptional<z.ZodEnum<["patient", "clinic", "practitioner", "system"]>>;
2131
- internalNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2132
- paymentStatus: z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>;
2133
- paymentTransactionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2134
- completedPreRequirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2135
- completedPostRequirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2136
- }, "strip", z.ZodTypeAny, {
2137
- status?: AppointmentStatus | undefined;
2138
- confirmationTime?: any;
2139
- actualDurationMinutes?: number | undefined;
2140
- cancellationReason?: string | null | undefined;
2141
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2142
- internalNotes?: string | null | undefined;
2143
- paymentStatus?: PaymentStatus | undefined;
2144
- paymentTransactionId?: string | null | undefined;
2145
- completedPreRequirements?: string[] | undefined;
2146
- completedPostRequirements?: string[] | undefined;
2000
+ type: z.ZodLiteral<DocumentElementType.HEADING>;
2001
+ text: z.ZodString;
2002
+ level: z.ZodNativeEnum<typeof HeadingLevel>;
2003
+ }>, "strip", z.ZodTypeAny, {
2004
+ type: DocumentElementType.HEADING;
2005
+ text: string;
2006
+ level: HeadingLevel;
2007
+ id?: string | undefined;
2008
+ required?: boolean | undefined;
2147
2009
  }, {
2148
- status?: AppointmentStatus | undefined;
2149
- confirmationTime?: any;
2150
- actualDurationMinutes?: number | undefined;
2151
- cancellationReason?: string | null | undefined;
2152
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2153
- internalNotes?: string | null | undefined;
2154
- paymentStatus?: PaymentStatus | undefined;
2155
- paymentTransactionId?: string | null | undefined;
2156
- completedPreRequirements?: string[] | undefined;
2157
- completedPostRequirements?: string[] | undefined;
2158
- }>, {
2159
- status?: AppointmentStatus | undefined;
2160
- confirmationTime?: any;
2161
- actualDurationMinutes?: number | undefined;
2162
- cancellationReason?: string | null | undefined;
2163
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2164
- internalNotes?: string | null | undefined;
2165
- paymentStatus?: PaymentStatus | undefined;
2166
- paymentTransactionId?: string | null | undefined;
2167
- completedPreRequirements?: string[] | undefined;
2168
- completedPostRequirements?: string[] | undefined;
2169
- }, {
2170
- status?: AppointmentStatus | undefined;
2171
- confirmationTime?: any;
2172
- actualDurationMinutes?: number | undefined;
2173
- cancellationReason?: string | null | undefined;
2174
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2175
- internalNotes?: string | null | undefined;
2176
- paymentStatus?: PaymentStatus | undefined;
2177
- paymentTransactionId?: string | null | undefined;
2178
- completedPreRequirements?: string[] | undefined;
2179
- completedPostRequirements?: string[] | undefined;
2180
- }>;
2181
- /**
2182
- * Schema for validating appointment search parameters
2183
- */
2184
- declare const searchAppointmentsSchema: z.ZodEffects<z.ZodObject<{
2185
- patientId: z.ZodOptional<z.ZodString>;
2186
- practitionerId: z.ZodOptional<z.ZodString>;
2187
- clinicBranchId: z.ZodOptional<z.ZodString>;
2188
- startDate: z.ZodOptional<z.ZodDate>;
2189
- endDate: z.ZodOptional<z.ZodDate>;
2190
- status: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<typeof AppointmentStatus>, z.ZodArray<z.ZodNativeEnum<typeof AppointmentStatus>, "many">]>>;
2191
- limit: z.ZodOptional<z.ZodNumber>;
2192
- startAfter: z.ZodOptional<z.ZodAny>;
2193
- }, "strip", z.ZodTypeAny, {
2194
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2195
- patientId?: string | undefined;
2196
- startDate?: Date | undefined;
2197
- endDate?: Date | undefined;
2198
- limit?: number | undefined;
2199
- startAfter?: any;
2200
- practitionerId?: string | undefined;
2201
- clinicBranchId?: string | undefined;
2202
- }, {
2203
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2204
- patientId?: string | undefined;
2205
- startDate?: Date | undefined;
2206
- endDate?: Date | undefined;
2207
- limit?: number | undefined;
2208
- startAfter?: any;
2209
- practitionerId?: string | undefined;
2210
- clinicBranchId?: string | undefined;
2211
- }>, {
2212
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2213
- patientId?: string | undefined;
2214
- startDate?: Date | undefined;
2215
- endDate?: Date | undefined;
2216
- limit?: number | undefined;
2217
- startAfter?: any;
2218
- practitionerId?: string | undefined;
2219
- clinicBranchId?: string | undefined;
2220
- }, {
2221
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2222
- patientId?: string | undefined;
2223
- startDate?: Date | undefined;
2224
- endDate?: Date | undefined;
2225
- limit?: number | undefined;
2226
- startAfter?: any;
2227
- practitionerId?: string | undefined;
2228
- clinicBranchId?: string | undefined;
2229
- }>;
2230
-
2231
- interface FirebaseInstance {
2232
- app: FirebaseApp;
2233
- db: Firestore;
2234
- auth: Auth;
2235
- analytics: Analytics | null;
2236
- }
2237
- declare const initializeFirebase: (config: {
2238
- apiKey: string;
2239
- authDomain: string;
2240
- projectId: string;
2241
- storageBucket: string;
2242
- messagingSenderId: string;
2243
- appId: string;
2244
- measurementId?: string;
2245
- }) => FirebaseInstance;
2246
- declare const getFirebaseInstance: () => Promise<FirebaseInstance>;
2247
- declare const getFirebaseAuth: () => Promise<Auth>;
2248
- declare const getFirebaseDB: () => Promise<Firestore>;
2249
- declare const getFirebaseApp: () => Promise<FirebaseApp>;
2250
-
2251
- /**
2252
- * Brend proizvoda ili opreme
2253
- * Predstavlja proizvođača ili dobavljača proizvoda i opreme koja se koristi u procedurama
2254
- *
2255
- * @property id - Jedinstveni identifikator brenda
2256
- * @property name - Naziv brenda
2257
- * @property manufacturer - Naziv proizvođača
2258
- * @property description - Detaljan opis brenda i njegovih proizvoda
2259
- * @property website - Web stranica brenda
2260
- * @property isActive - Da li je brend aktivan u sistemu
2261
- * @property createdAt - Datum kreiranja
2262
- * @property updatedAt - Datum poslednjeg ažuriranja
2263
- */
2264
- interface Brand {
2265
- id?: string;
2266
- name: string;
2267
- manufacturer: string;
2268
- createdAt: Date;
2269
- updatedAt: Date;
2270
- isActive: boolean;
2271
- website?: string;
2272
- description?: string;
2273
- }
2274
-
2275
- declare const documentElementSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<z.objectUtil.extendShape<{
2276
- id: z.ZodOptional<z.ZodString>;
2277
- type: z.ZodNativeEnum<typeof DocumentElementType>;
2278
- required: z.ZodOptional<z.ZodBoolean>;
2279
- }, {
2280
- type: z.ZodLiteral<DocumentElementType.HEADING>;
2281
- text: z.ZodString;
2282
- level: z.ZodNativeEnum<typeof HeadingLevel>;
2283
- }>, "strip", z.ZodTypeAny, {
2284
- type: DocumentElementType.HEADING;
2285
- text: string;
2286
- level: HeadingLevel;
2287
- id?: string | undefined;
2288
- required?: boolean | undefined;
2289
- }, {
2290
- type: DocumentElementType.HEADING;
2291
- text: string;
2292
- level: HeadingLevel;
2293
- id?: string | undefined;
2294
- required?: boolean | undefined;
2295
- }>, z.ZodObject<z.objectUtil.extendShape<{
2296
- id: z.ZodOptional<z.ZodString>;
2297
- type: z.ZodNativeEnum<typeof DocumentElementType>;
2298
- required: z.ZodOptional<z.ZodBoolean>;
2010
+ type: DocumentElementType.HEADING;
2011
+ text: string;
2012
+ level: HeadingLevel;
2013
+ id?: string | undefined;
2014
+ required?: boolean | undefined;
2015
+ }>, z.ZodObject<z.objectUtil.extendShape<{
2016
+ id: z.ZodOptional<z.ZodString>;
2017
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
2018
+ required: z.ZodOptional<z.ZodBoolean>;
2299
2019
  }, {
2300
2020
  type: z.ZodLiteral<DocumentElementType.PARAGRAPH>;
2301
2021
  text: z.ZodString;
@@ -2508,6 +2228,23 @@ declare const documentElementSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObjec
2508
2228
  id: z.ZodOptional<z.ZodString>;
2509
2229
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2510
2230
  required: z.ZodOptional<z.ZodBoolean>;
2231
+ }, {
2232
+ type: z.ZodLiteral<DocumentElementType.DITIGAL_SIGNATURE>;
2233
+ label: z.ZodString;
2234
+ }>, "strip", z.ZodTypeAny, {
2235
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2236
+ label: string;
2237
+ id?: string | undefined;
2238
+ required?: boolean | undefined;
2239
+ }, {
2240
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2241
+ label: string;
2242
+ id?: string | undefined;
2243
+ required?: boolean | undefined;
2244
+ }>, z.ZodObject<z.objectUtil.extendShape<{
2245
+ id: z.ZodOptional<z.ZodString>;
2246
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
2247
+ required: z.ZodOptional<z.ZodBoolean>;
2511
2248
  }, {
2512
2249
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2513
2250
  label: z.ZodString;
@@ -2742,6 +2479,21 @@ declare const documentElementWithoutIdSchema: z.ZodDiscriminatedUnion<"type", [z
2742
2479
  id: z.ZodOptional<z.ZodString>;
2743
2480
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2744
2481
  required: z.ZodOptional<z.ZodBoolean>;
2482
+ }, {
2483
+ type: z.ZodLiteral<DocumentElementType.DITIGAL_SIGNATURE>;
2484
+ label: z.ZodString;
2485
+ }>, "id">, "strip", z.ZodTypeAny, {
2486
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2487
+ label: string;
2488
+ required?: boolean | undefined;
2489
+ }, {
2490
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2491
+ label: string;
2492
+ required?: boolean | undefined;
2493
+ }>, z.ZodObject<Omit<z.objectUtil.extendShape<{
2494
+ id: z.ZodOptional<z.ZodString>;
2495
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
2496
+ required: z.ZodOptional<z.ZodBoolean>;
2745
2497
  }, {
2746
2498
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2747
2499
  label: z.ZodString;
@@ -2977,6 +2729,21 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
2977
2729
  id: z.ZodOptional<z.ZodString>;
2978
2730
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2979
2731
  required: z.ZodOptional<z.ZodBoolean>;
2732
+ }, {
2733
+ type: z.ZodLiteral<DocumentElementType.DITIGAL_SIGNATURE>;
2734
+ label: z.ZodString;
2735
+ }>, "id">, "strip", z.ZodTypeAny, {
2736
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2737
+ label: string;
2738
+ required?: boolean | undefined;
2739
+ }, {
2740
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2741
+ label: string;
2742
+ required?: boolean | undefined;
2743
+ }>, z.ZodObject<Omit<z.objectUtil.extendShape<{
2744
+ id: z.ZodOptional<z.ZodString>;
2745
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
2746
+ required: z.ZodOptional<z.ZodBoolean>;
2980
2747
  }, {
2981
2748
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2982
2749
  label: z.ZodString;
@@ -2996,6 +2763,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
2996
2763
  maxFileSizeMB?: number | undefined;
2997
2764
  }>]>, "many">;
2998
2765
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2766
+ isUserForm: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2767
+ isRequired: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2768
+ sortingOrder: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
2999
2769
  }, "strip", z.ZodTypeAny, {
3000
2770
  title: string;
3001
2771
  elements: ({
@@ -3057,6 +2827,10 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3057
2827
  type: DocumentElementType.SIGNATURE;
3058
2828
  label: string;
3059
2829
  required?: boolean | undefined;
2830
+ } | {
2831
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2832
+ label: string;
2833
+ required?: boolean | undefined;
3060
2834
  } | {
3061
2835
  type: DocumentElementType.FILE_UPLOAD;
3062
2836
  label: string;
@@ -3064,6 +2838,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3064
2838
  allowedFileTypes?: string[] | undefined;
3065
2839
  maxFileSizeMB?: number | undefined;
3066
2840
  })[];
2841
+ isUserForm: boolean;
2842
+ isRequired: boolean;
2843
+ sortingOrder: number;
3067
2844
  description?: string | undefined;
3068
2845
  tags?: string[] | undefined;
3069
2846
  }, {
@@ -3127,6 +2904,10 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3127
2904
  type: DocumentElementType.SIGNATURE;
3128
2905
  label: string;
3129
2906
  required?: boolean | undefined;
2907
+ } | {
2908
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2909
+ label: string;
2910
+ required?: boolean | undefined;
3130
2911
  } | {
3131
2912
  type: DocumentElementType.FILE_UPLOAD;
3132
2913
  label: string;
@@ -3136,6 +2917,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3136
2917
  })[];
3137
2918
  description?: string | undefined;
3138
2919
  tags?: string[] | undefined;
2920
+ isUserForm?: boolean | undefined;
2921
+ isRequired?: boolean | undefined;
2922
+ sortingOrder?: number | undefined;
3139
2923
  }>;
3140
2924
  declare const updateDocumentTemplateSchema: z.ZodObject<{
3141
2925
  title: z.ZodOptional<z.ZodString>;
@@ -3354,6 +3138,21 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3354
3138
  id: z.ZodOptional<z.ZodString>;
3355
3139
  type: z.ZodNativeEnum<typeof DocumentElementType>;
3356
3140
  required: z.ZodOptional<z.ZodBoolean>;
3141
+ }, {
3142
+ type: z.ZodLiteral<DocumentElementType.DITIGAL_SIGNATURE>;
3143
+ label: z.ZodString;
3144
+ }>, "id">, "strip", z.ZodTypeAny, {
3145
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3146
+ label: string;
3147
+ required?: boolean | undefined;
3148
+ }, {
3149
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3150
+ label: string;
3151
+ required?: boolean | undefined;
3152
+ }>, z.ZodObject<Omit<z.objectUtil.extendShape<{
3153
+ id: z.ZodOptional<z.ZodString>;
3154
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
3155
+ required: z.ZodOptional<z.ZodBoolean>;
3357
3156
  }, {
3358
3157
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
3359
3158
  label: z.ZodString;
@@ -3374,6 +3173,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3374
3173
  }>]>, "many">>;
3375
3174
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3376
3175
  isActive: z.ZodOptional<z.ZodBoolean>;
3176
+ isUserForm: z.ZodOptional<z.ZodBoolean>;
3177
+ isRequired: z.ZodOptional<z.ZodBoolean>;
3178
+ sortingOrder: z.ZodOptional<z.ZodNumber>;
3377
3179
  }, "strip", z.ZodTypeAny, {
3378
3180
  isActive?: boolean | undefined;
3379
3181
  description?: string | undefined;
@@ -3438,6 +3240,10 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3438
3240
  type: DocumentElementType.SIGNATURE;
3439
3241
  label: string;
3440
3242
  required?: boolean | undefined;
3243
+ } | {
3244
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3245
+ label: string;
3246
+ required?: boolean | undefined;
3441
3247
  } | {
3442
3248
  type: DocumentElementType.FILE_UPLOAD;
3443
3249
  label: string;
@@ -3445,6 +3251,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3445
3251
  allowedFileTypes?: string[] | undefined;
3446
3252
  maxFileSizeMB?: number | undefined;
3447
3253
  })[] | undefined;
3254
+ isUserForm?: boolean | undefined;
3255
+ isRequired?: boolean | undefined;
3256
+ sortingOrder?: number | undefined;
3448
3257
  }, {
3449
3258
  isActive?: boolean | undefined;
3450
3259
  description?: string | undefined;
@@ -3509,6 +3318,10 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3509
3318
  type: DocumentElementType.SIGNATURE;
3510
3319
  label: string;
3511
3320
  required?: boolean | undefined;
3321
+ } | {
3322
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3323
+ label: string;
3324
+ required?: boolean | undefined;
3512
3325
  } | {
3513
3326
  type: DocumentElementType.FILE_UPLOAD;
3514
3327
  label: string;
@@ -3516,6 +3329,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3516
3329
  allowedFileTypes?: string[] | undefined;
3517
3330
  maxFileSizeMB?: number | undefined;
3518
3331
  })[] | undefined;
3332
+ isUserForm?: boolean | undefined;
3333
+ isRequired?: boolean | undefined;
3334
+ sortingOrder?: number | undefined;
3519
3335
  }>;
3520
3336
  declare const documentTemplateSchema: z.ZodObject<{
3521
3337
  id: z.ZodString;
@@ -3760,6 +3576,23 @@ declare const documentTemplateSchema: z.ZodObject<{
3760
3576
  id: z.ZodOptional<z.ZodString>;
3761
3577
  type: z.ZodNativeEnum<typeof DocumentElementType>;
3762
3578
  required: z.ZodOptional<z.ZodBoolean>;
3579
+ }, {
3580
+ type: z.ZodLiteral<DocumentElementType.DITIGAL_SIGNATURE>;
3581
+ label: z.ZodString;
3582
+ }>, "strip", z.ZodTypeAny, {
3583
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3584
+ label: string;
3585
+ id?: string | undefined;
3586
+ required?: boolean | undefined;
3587
+ }, {
3588
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3589
+ label: string;
3590
+ id?: string | undefined;
3591
+ required?: boolean | undefined;
3592
+ }>, z.ZodObject<z.objectUtil.extendShape<{
3593
+ id: z.ZodOptional<z.ZodString>;
3594
+ type: z.ZodNativeEnum<typeof DocumentElementType>;
3595
+ required: z.ZodOptional<z.ZodBoolean>;
3763
3596
  }, {
3764
3597
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
3765
3598
  label: z.ZodString;
@@ -3783,6 +3616,9 @@ declare const documentTemplateSchema: z.ZodObject<{
3783
3616
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3784
3617
  version: z.ZodNumber;
3785
3618
  isActive: z.ZodBoolean;
3619
+ isUserForm: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
3620
+ isRequired: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
3621
+ sortingOrder: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3786
3622
  }, "strip", z.ZodTypeAny, {
3787
3623
  id: string;
3788
3624
  createdAt: number;
@@ -3859,6 +3695,11 @@ declare const documentTemplateSchema: z.ZodObject<{
3859
3695
  label: string;
3860
3696
  id?: string | undefined;
3861
3697
  required?: boolean | undefined;
3698
+ } | {
3699
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3700
+ label: string;
3701
+ id?: string | undefined;
3702
+ required?: boolean | undefined;
3862
3703
  } | {
3863
3704
  type: DocumentElementType.FILE_UPLOAD;
3864
3705
  label: string;
@@ -3867,6 +3708,9 @@ declare const documentTemplateSchema: z.ZodObject<{
3867
3708
  allowedFileTypes?: string[] | undefined;
3868
3709
  maxFileSizeMB?: number | undefined;
3869
3710
  })[];
3711
+ isUserForm: boolean;
3712
+ isRequired: boolean;
3713
+ sortingOrder: number;
3870
3714
  createdBy: string;
3871
3715
  version: number;
3872
3716
  description?: string | undefined;
@@ -3947,6 +3791,11 @@ declare const documentTemplateSchema: z.ZodObject<{
3947
3791
  label: string;
3948
3792
  id?: string | undefined;
3949
3793
  required?: boolean | undefined;
3794
+ } | {
3795
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3796
+ label: string;
3797
+ id?: string | undefined;
3798
+ required?: boolean | undefined;
3950
3799
  } | {
3951
3800
  type: DocumentElementType.FILE_UPLOAD;
3952
3801
  label: string;
@@ -3959,6 +3808,91 @@ declare const documentTemplateSchema: z.ZodObject<{
3959
3808
  version: number;
3960
3809
  description?: string | undefined;
3961
3810
  tags?: string[] | undefined;
3811
+ isUserForm?: boolean | undefined;
3812
+ isRequired?: boolean | undefined;
3813
+ sortingOrder?: number | undefined;
3814
+ }>;
3815
+ declare const filledDocumentStatusSchema: z.ZodNativeEnum<typeof FilledDocumentStatus>;
3816
+ declare const filledDocumentSchema: z.ZodObject<{
3817
+ id: z.ZodString;
3818
+ templateId: z.ZodString;
3819
+ templateVersion: z.ZodNumber;
3820
+ isUserForm: z.ZodBoolean;
3821
+ procedureId: z.ZodString;
3822
+ appointmentId: z.ZodString;
3823
+ patientId: z.ZodString;
3824
+ practitionerId: z.ZodString;
3825
+ clinicId: z.ZodString;
3826
+ createdAt: z.ZodNumber;
3827
+ updatedAt: z.ZodNumber;
3828
+ values: z.ZodRecord<z.ZodString, z.ZodAny>;
3829
+ status: z.ZodNativeEnum<typeof FilledDocumentStatus>;
3830
+ }, "strip", z.ZodTypeAny, {
3831
+ id: string;
3832
+ createdAt: number;
3833
+ updatedAt: number;
3834
+ status: FilledDocumentStatus;
3835
+ patientId: string;
3836
+ values: Record<string, any>;
3837
+ isUserForm: boolean;
3838
+ templateId: string;
3839
+ templateVersion: number;
3840
+ procedureId: string;
3841
+ appointmentId: string;
3842
+ practitionerId: string;
3843
+ clinicId: string;
3844
+ }, {
3845
+ id: string;
3846
+ createdAt: number;
3847
+ updatedAt: number;
3848
+ status: FilledDocumentStatus;
3849
+ patientId: string;
3850
+ values: Record<string, any>;
3851
+ isUserForm: boolean;
3852
+ templateId: string;
3853
+ templateVersion: number;
3854
+ procedureId: string;
3855
+ appointmentId: string;
3856
+ practitionerId: string;
3857
+ clinicId: string;
3858
+ }>;
3859
+ declare const createFilledDocumentDataSchema: z.ZodObject<{
3860
+ templateId: z.ZodString;
3861
+ procedureId: z.ZodString;
3862
+ appointmentId: z.ZodString;
3863
+ patientId: z.ZodString;
3864
+ practitionerId: z.ZodString;
3865
+ clinicId: z.ZodString;
3866
+ values: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
3867
+ status: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<typeof FilledDocumentStatus>>>;
3868
+ }, "strip", z.ZodTypeAny, {
3869
+ status: FilledDocumentStatus;
3870
+ patientId: string;
3871
+ values: Record<string, any>;
3872
+ templateId: string;
3873
+ procedureId: string;
3874
+ appointmentId: string;
3875
+ practitionerId: string;
3876
+ clinicId: string;
3877
+ }, {
3878
+ patientId: string;
3879
+ templateId: string;
3880
+ procedureId: string;
3881
+ appointmentId: string;
3882
+ practitionerId: string;
3883
+ clinicId: string;
3884
+ status?: FilledDocumentStatus | undefined;
3885
+ values?: Record<string, any> | undefined;
3886
+ }>;
3887
+ declare const updateFilledDocumentDataSchema: z.ZodObject<{
3888
+ values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
3889
+ status: z.ZodOptional<z.ZodNativeEnum<typeof FilledDocumentStatus>>;
3890
+ }, "strip", z.ZodTypeAny, {
3891
+ status?: FilledDocumentStatus | undefined;
3892
+ values?: Record<string, any> | undefined;
3893
+ }, {
3894
+ status?: FilledDocumentStatus | undefined;
3895
+ values?: Record<string, any> | undefined;
3962
3896
  }>;
3963
3897
 
3964
3898
  declare class BaseService {
@@ -4419,6 +4353,685 @@ declare class ProductService extends BaseService implements IProductService {
4419
4353
  getById(technologyId: string, productId: string): Promise<Product | null>;
4420
4354
  }
4421
4355
 
4356
+ /**
4357
+ * Enum defining the possible statuses of an appointment.
4358
+ */
4359
+ declare enum AppointmentStatus {
4360
+ PENDING = "pending",// Initial state after booking, before confirmation (if applicable)
4361
+ CONFIRMED = "confirmed",// Confirmed by clinic/practitioner
4362
+ CHECKED_IN = "checked_in",// Patient has arrived
4363
+ IN_PROGRESS = "in_progress",// Procedure has started
4364
+ COMPLETED = "completed",// Procedure finished successfully
4365
+ CANCELED_PATIENT = "canceled_patient",// Canceled by the patient
4366
+ CANCELED_PATIENT_RESCHEDULED = "canceled_patient_rescheduled",// Canceled by the patient and rescheduled by the clinic
4367
+ CANCELED_CLINIC = "canceled_clinic",// Canceled by the clinic/practitioner
4368
+ NO_SHOW = "no_show",// Patient did not attend
4369
+ RESCHEDULED_BY_CLINIC = "rescheduled_by_clinic"
4370
+ }
4371
+ /**
4372
+ * Enum defining the payment status of an appointment.
4373
+ */
4374
+ declare enum PaymentStatus {
4375
+ UNPAID = "unpaid",
4376
+ PAID = "paid",
4377
+ PARTIALLY_PAID = "partially_paid",
4378
+ REFUNDED = "refunded",
4379
+ NOT_APPLICABLE = "not_applicable"
4380
+ }
4381
+ /**
4382
+ * Enum for different types of media that can be attached to an appointment.
4383
+ */
4384
+ declare enum MediaType {
4385
+ BEFORE_PHOTO = "before_photo",
4386
+ AFTER_PHOTO = "after_photo",
4387
+ CONSENT_SCAN = "consent_scan",
4388
+ OTHER_DOCUMENT = "other_document"
4389
+ }
4390
+ /**
4391
+ * Interface to describe a media file linked to an appointment.
4392
+ */
4393
+ interface AppointmentMediaItem {
4394
+ id: string;
4395
+ type: MediaType;
4396
+ url: string;
4397
+ fileName?: string;
4398
+ uploadedAt: Timestamp;
4399
+ uploadedBy: string;
4400
+ description?: string;
4401
+ }
4402
+ /**
4403
+ * Interface for procedure-specific information
4404
+ */
4405
+ interface ProcedureExtendedInfo {
4406
+ id: string;
4407
+ name: string;
4408
+ description: string;
4409
+ cost: number;
4410
+ duration: number;
4411
+ procedureFamily: ProcedureFamily;
4412
+ procedureCategoryId: string;
4413
+ procedureCategoryName: string;
4414
+ procedureSubCategoryId: string;
4415
+ procedureSubCategoryName: string;
4416
+ procedureTechnologyId: string;
4417
+ procedureTechnologyName: string;
4418
+ procedureProductBrandId: string;
4419
+ procedureProductBrandName: string;
4420
+ procedureProductId: string;
4421
+ procedureProductName: string;
4422
+ }
4423
+ /**
4424
+ * Interface to describe a filled form linked to an appointment.
4425
+ */
4426
+ interface LinkedFormInfo {
4427
+ formId: string;
4428
+ templateId: string;
4429
+ templateVersion: number;
4430
+ title: string;
4431
+ isUserForm: boolean;
4432
+ status: FilledDocumentStatus;
4433
+ path: string;
4434
+ submittedAt?: Timestamp;
4435
+ completedAt?: Timestamp;
4436
+ }
4437
+ /**
4438
+ * Interface for summarized patient review information linked to an appointment.
4439
+ */
4440
+ interface PatientReviewInfo {
4441
+ reviewId: string;
4442
+ rating: number;
4443
+ comment?: string;
4444
+ reviewedAt: Timestamp;
4445
+ }
4446
+ /**
4447
+ * Represents a booked appointment, aggregating key information and relevant procedure rules.
4448
+ */
4449
+ interface Appointment {
4450
+ /** Unique identifier for the appointment */
4451
+ id: string;
4452
+ /** Reference to the associated CalendarEvent */
4453
+ calendarEventId: string;
4454
+ /** ID of the clinic branch */
4455
+ clinicBranchId: string;
4456
+ /** Aggregated clinic information (snapshot) */
4457
+ clinicInfo: ClinicInfo;
4458
+ /** ID of the practitioner */
4459
+ practitionerId: string;
4460
+ /** Aggregated practitioner information (snapshot) */
4461
+ practitionerInfo: PractitionerProfileInfo;
4462
+ /** ID of the patient */
4463
+ patientId: string;
4464
+ /** Aggregated patient information (snapshot) */
4465
+ patientInfo: PatientProfileInfo;
4466
+ /** ID of the procedure */
4467
+ procedureId: string;
4468
+ /** Aggregated procedure information including product/brand (snapshot) */
4469
+ procedureInfo: ProcedureSummaryInfo;
4470
+ /** Extended procedure information */
4471
+ procedureExtendedInfo: ProcedureExtendedInfo;
4472
+ /** Status of the appointment */
4473
+ status: AppointmentStatus;
4474
+ /** Timestamps */
4475
+ bookingTime: Timestamp;
4476
+ confirmationTime?: Timestamp | null;
4477
+ cancellationTime?: Timestamp | null;
4478
+ rescheduleTime?: Timestamp | null;
4479
+ appointmentStartTime: Timestamp;
4480
+ appointmentEndTime: Timestamp;
4481
+ procedureActualStartTime?: Timestamp | null;
4482
+ actualDurationMinutes?: number;
4483
+ /** Cancellation Details */
4484
+ cancellationReason?: string | null;
4485
+ canceledBy?: "patient" | "clinic" | "practitioner" | "system";
4486
+ /** Notes */
4487
+ internalNotes?: string | null;
4488
+ patientNotes?: string | null;
4489
+ /** Payment Details */
4490
+ cost: number;
4491
+ currency: Currency;
4492
+ paymentStatus: PaymentStatus;
4493
+ paymentTransactionId?: string | null;
4494
+ /** Procedure-related conditions and requirements */
4495
+ blockingConditions: BlockingCondition[];
4496
+ contraindications: Contraindication[];
4497
+ preProcedureRequirements: Requirement[];
4498
+ postProcedureRequirements: Requirement[];
4499
+ /** Tracking information for requirements completion */
4500
+ completedPreRequirements?: string[];
4501
+ completedPostRequirements?: string[];
4502
+ /** NEW: Linked forms (consent, procedure-specific forms, etc.) */
4503
+ linkedForms?: LinkedFormInfo[];
4504
+ pendingUserFormsIds?: string[];
4505
+ /** NEW: Media items (before/after photos, scanned documents, etc.) */
4506
+ media?: AppointmentMediaItem[];
4507
+ /** NEW: Information about the patient's review for this appointment */
4508
+ reviewInfo?: PatientReviewInfo | null;
4509
+ /** NEW: Details about the finalization of the appointment by the practitioner */
4510
+ finalizedDetails?: {
4511
+ by: string;
4512
+ at: Timestamp;
4513
+ notes?: string;
4514
+ };
4515
+ /** Timestamps for record creation and updates */
4516
+ createdAt: Timestamp;
4517
+ updatedAt: Timestamp;
4518
+ /** Recurring appointment information */
4519
+ isRecurring?: boolean;
4520
+ recurringAppointmentId?: string | null;
4521
+ /** NEW: Flag for soft deletion or archiving */
4522
+ isArchived?: boolean;
4523
+ }
4524
+ /**
4525
+ * Data needed to create a new Appointment
4526
+ */
4527
+ interface CreateAppointmentData {
4528
+ calendarEventId: string;
4529
+ clinicBranchId: string;
4530
+ practitionerId: string;
4531
+ patientId: string;
4532
+ procedureId: string;
4533
+ appointmentStartTime: Timestamp;
4534
+ appointmentEndTime: Timestamp;
4535
+ cost: number;
4536
+ currency: Currency;
4537
+ patientNotes?: string | null;
4538
+ initialStatus: AppointmentStatus;
4539
+ initialPaymentStatus?: PaymentStatus;
4540
+ }
4541
+ /**
4542
+ * Data allowed for updating an Appointment
4543
+ */
4544
+ interface UpdateAppointmentData {
4545
+ status?: AppointmentStatus;
4546
+ confirmationTime?: Timestamp | FieldValue | null;
4547
+ cancellationTime?: Timestamp | FieldValue | null;
4548
+ rescheduleTime?: Timestamp | FieldValue | null;
4549
+ procedureActualStartTime?: Timestamp | FieldValue | null;
4550
+ actualDurationMinutes?: number;
4551
+ cancellationReason?: string | null;
4552
+ canceledBy?: "patient" | "clinic" | "practitioner" | "system";
4553
+ internalNotes?: string | null;
4554
+ patientNotes?: string | FieldValue | null;
4555
+ paymentStatus?: PaymentStatus;
4556
+ paymentTransactionId?: string | FieldValue | null;
4557
+ completedPreRequirements?: string[] | FieldValue;
4558
+ completedPostRequirements?: string[] | FieldValue;
4559
+ appointmentStartTime?: Timestamp;
4560
+ appointmentEndTime?: Timestamp;
4561
+ calendarEventId?: string;
4562
+ cost?: number;
4563
+ clinicBranchId?: string;
4564
+ practitionerId?: string;
4565
+ /** NEW: For updating linked forms - typically managed by dedicated methods */
4566
+ linkedForms?: LinkedFormInfo[] | FieldValue;
4567
+ /** NEW: For updating media items - typically managed by dedicated methods */
4568
+ media?: AppointmentMediaItem[] | FieldValue;
4569
+ /** NEW: For adding/updating review information */
4570
+ reviewInfo?: PatientReviewInfo | FieldValue | null;
4571
+ /** NEW: For setting practitioner finalization details */
4572
+ finalizedDetails?: {
4573
+ by: string;
4574
+ at: Timestamp;
4575
+ notes?: string;
4576
+ } | FieldValue;
4577
+ /** NEW: For archiving/unarchiving */
4578
+ isArchived?: boolean;
4579
+ updatedAt?: FieldValue;
4580
+ }
4581
+ /**
4582
+ * Parameters for searching appointments
4583
+ */
4584
+ interface SearchAppointmentsParams {
4585
+ patientId?: string;
4586
+ practitionerId?: string;
4587
+ clinicBranchId?: string;
4588
+ startDate?: Date;
4589
+ endDate?: Date;
4590
+ status?: AppointmentStatus | AppointmentStatus[];
4591
+ limit?: number;
4592
+ startAfter?: any;
4593
+ }
4594
+ /** Firestore collection name */
4595
+ declare const APPOINTMENTS_COLLECTION = "appointments";
4596
+
4597
+ /**
4598
+ * Schema for validating appointment creation data
4599
+ */
4600
+ declare const createAppointmentSchema: z.ZodEffects<z.ZodObject<{
4601
+ calendarEventId: z.ZodString;
4602
+ clinicBranchId: z.ZodString;
4603
+ practitionerId: z.ZodString;
4604
+ patientId: z.ZodString;
4605
+ procedureId: z.ZodString;
4606
+ appointmentStartTime: z.ZodEffects<z.ZodAny, any, any>;
4607
+ appointmentEndTime: z.ZodEffects<z.ZodAny, any, any>;
4608
+ cost: z.ZodNumber;
4609
+ currency: z.ZodString;
4610
+ patientNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4611
+ initialStatus: z.ZodNativeEnum<typeof AppointmentStatus>;
4612
+ initialPaymentStatus: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>>;
4613
+ }, "strip", z.ZodTypeAny, {
4614
+ patientId: string;
4615
+ procedureId: string;
4616
+ practitionerId: string;
4617
+ cost: number;
4618
+ calendarEventId: string;
4619
+ clinicBranchId: string;
4620
+ currency: string;
4621
+ initialStatus: AppointmentStatus;
4622
+ initialPaymentStatus: PaymentStatus;
4623
+ appointmentStartTime?: any;
4624
+ appointmentEndTime?: any;
4625
+ patientNotes?: string | null | undefined;
4626
+ }, {
4627
+ patientId: string;
4628
+ procedureId: string;
4629
+ practitionerId: string;
4630
+ cost: number;
4631
+ calendarEventId: string;
4632
+ clinicBranchId: string;
4633
+ currency: string;
4634
+ initialStatus: AppointmentStatus;
4635
+ appointmentStartTime?: any;
4636
+ appointmentEndTime?: any;
4637
+ patientNotes?: string | null | undefined;
4638
+ initialPaymentStatus?: PaymentStatus | undefined;
4639
+ }>, {
4640
+ patientId: string;
4641
+ procedureId: string;
4642
+ practitionerId: string;
4643
+ cost: number;
4644
+ calendarEventId: string;
4645
+ clinicBranchId: string;
4646
+ currency: string;
4647
+ initialStatus: AppointmentStatus;
4648
+ initialPaymentStatus: PaymentStatus;
4649
+ appointmentStartTime?: any;
4650
+ appointmentEndTime?: any;
4651
+ patientNotes?: string | null | undefined;
4652
+ }, {
4653
+ patientId: string;
4654
+ procedureId: string;
4655
+ practitionerId: string;
4656
+ cost: number;
4657
+ calendarEventId: string;
4658
+ clinicBranchId: string;
4659
+ currency: string;
4660
+ initialStatus: AppointmentStatus;
4661
+ appointmentStartTime?: any;
4662
+ appointmentEndTime?: any;
4663
+ patientNotes?: string | null | undefined;
4664
+ initialPaymentStatus?: PaymentStatus | undefined;
4665
+ }>;
4666
+ /**
4667
+ * Schema for validating appointment update data
4668
+ */
4669
+ declare const updateAppointmentSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
4670
+ status: z.ZodOptional<z.ZodNativeEnum<typeof AppointmentStatus>>;
4671
+ confirmationTime: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4672
+ cancellationTime: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4673
+ rescheduleTime: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4674
+ procedureActualStartTime: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4675
+ actualDurationMinutes: z.ZodOptional<z.ZodNumber>;
4676
+ cancellationReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4677
+ canceledBy: z.ZodOptional<z.ZodEnum<["patient", "clinic", "practitioner", "system"]>>;
4678
+ internalNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4679
+ patientNotes: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4680
+ paymentStatus: z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>;
4681
+ paymentTransactionId: z.ZodNullable<z.ZodOptional<z.ZodAny>>;
4682
+ completedPreRequirements: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodAny]>>;
4683
+ completedPostRequirements: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodAny]>>;
4684
+ pendingUserFormsIds: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodAny]>>;
4685
+ appointmentStartTime: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4686
+ appointmentEndTime: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4687
+ calendarEventId: z.ZodOptional<z.ZodString>;
4688
+ cost: z.ZodOptional<z.ZodNumber>;
4689
+ clinicBranchId: z.ZodOptional<z.ZodString>;
4690
+ practitionerId: z.ZodOptional<z.ZodString>;
4691
+ linkedForms: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodObject<{
4692
+ formId: z.ZodString;
4693
+ templateId: z.ZodString;
4694
+ templateVersion: z.ZodNumber;
4695
+ title: z.ZodString;
4696
+ isUserForm: z.ZodBoolean;
4697
+ status: z.ZodNativeEnum<typeof FilledDocumentStatus>;
4698
+ path: z.ZodString;
4699
+ submittedAt: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4700
+ completedAt: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4701
+ }, "strip", z.ZodTypeAny, {
4702
+ status: FilledDocumentStatus;
4703
+ path: string;
4704
+ title: string;
4705
+ isUserForm: boolean;
4706
+ templateId: string;
4707
+ templateVersion: number;
4708
+ formId: string;
4709
+ submittedAt?: any;
4710
+ completedAt?: any;
4711
+ }, {
4712
+ status: FilledDocumentStatus;
4713
+ path: string;
4714
+ title: string;
4715
+ isUserForm: boolean;
4716
+ templateId: string;
4717
+ templateVersion: number;
4718
+ formId: string;
4719
+ submittedAt?: any;
4720
+ completedAt?: any;
4721
+ }>, "many">, z.ZodAny]>>;
4722
+ media: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodObject<{
4723
+ id: z.ZodString;
4724
+ type: z.ZodNativeEnum<typeof MediaType>;
4725
+ url: z.ZodString;
4726
+ fileName: z.ZodOptional<z.ZodString>;
4727
+ uploadedAt: z.ZodEffects<z.ZodAny, any, any>;
4728
+ uploadedBy: z.ZodString;
4729
+ description: z.ZodOptional<z.ZodString>;
4730
+ }, "strip", z.ZodTypeAny, {
4731
+ id: string;
4732
+ type: MediaType;
4733
+ url: string;
4734
+ uploadedBy: string;
4735
+ description?: string | undefined;
4736
+ fileName?: string | undefined;
4737
+ uploadedAt?: any;
4738
+ }, {
4739
+ id: string;
4740
+ type: MediaType;
4741
+ url: string;
4742
+ uploadedBy: string;
4743
+ description?: string | undefined;
4744
+ fileName?: string | undefined;
4745
+ uploadedAt?: any;
4746
+ }>, "many">, z.ZodAny]>>;
4747
+ reviewInfo: z.ZodOptional<z.ZodUnion<[z.ZodNullable<z.ZodObject<{
4748
+ reviewId: z.ZodString;
4749
+ rating: z.ZodNumber;
4750
+ comment: z.ZodOptional<z.ZodString>;
4751
+ reviewedAt: z.ZodEffects<z.ZodAny, any, any>;
4752
+ }, "strip", z.ZodTypeAny, {
4753
+ reviewId: string;
4754
+ rating: number;
4755
+ comment?: string | undefined;
4756
+ reviewedAt?: any;
4757
+ }, {
4758
+ reviewId: string;
4759
+ rating: number;
4760
+ comment?: string | undefined;
4761
+ reviewedAt?: any;
4762
+ }>>, z.ZodAny]>>;
4763
+ finalizedDetails: z.ZodOptional<z.ZodUnion<[z.ZodNullable<z.ZodObject<{
4764
+ by: z.ZodString;
4765
+ at: z.ZodEffects<z.ZodAny, any, any>;
4766
+ notes: z.ZodOptional<z.ZodString>;
4767
+ }, "strip", z.ZodTypeAny, {
4768
+ by: string;
4769
+ notes?: string | undefined;
4770
+ at?: any;
4771
+ }, {
4772
+ by: string;
4773
+ notes?: string | undefined;
4774
+ at?: any;
4775
+ }>>, z.ZodAny]>>;
4776
+ isArchived: z.ZodOptional<z.ZodBoolean>;
4777
+ updatedAt: z.ZodOptional<z.ZodAny>;
4778
+ }, "strip", z.ZodTypeAny, {
4779
+ updatedAt?: any;
4780
+ status?: AppointmentStatus | undefined;
4781
+ practitionerId?: string | undefined;
4782
+ cost?: number | undefined;
4783
+ calendarEventId?: string | undefined;
4784
+ clinicBranchId?: string | undefined;
4785
+ appointmentStartTime?: any;
4786
+ appointmentEndTime?: any;
4787
+ patientNotes?: any;
4788
+ confirmationTime?: any;
4789
+ cancellationTime?: any;
4790
+ rescheduleTime?: any;
4791
+ procedureActualStartTime?: any;
4792
+ actualDurationMinutes?: number | undefined;
4793
+ cancellationReason?: string | null | undefined;
4794
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4795
+ internalNotes?: string | null | undefined;
4796
+ paymentStatus?: PaymentStatus | undefined;
4797
+ paymentTransactionId?: any;
4798
+ completedPreRequirements?: any;
4799
+ completedPostRequirements?: any;
4800
+ pendingUserFormsIds?: any;
4801
+ linkedForms?: any;
4802
+ media?: any;
4803
+ reviewInfo?: any;
4804
+ finalizedDetails?: any;
4805
+ isArchived?: boolean | undefined;
4806
+ }, {
4807
+ updatedAt?: any;
4808
+ status?: AppointmentStatus | undefined;
4809
+ practitionerId?: string | undefined;
4810
+ cost?: number | undefined;
4811
+ calendarEventId?: string | undefined;
4812
+ clinicBranchId?: string | undefined;
4813
+ appointmentStartTime?: any;
4814
+ appointmentEndTime?: any;
4815
+ patientNotes?: any;
4816
+ confirmationTime?: any;
4817
+ cancellationTime?: any;
4818
+ rescheduleTime?: any;
4819
+ procedureActualStartTime?: any;
4820
+ actualDurationMinutes?: number | undefined;
4821
+ cancellationReason?: string | null | undefined;
4822
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4823
+ internalNotes?: string | null | undefined;
4824
+ paymentStatus?: PaymentStatus | undefined;
4825
+ paymentTransactionId?: any;
4826
+ completedPreRequirements?: any;
4827
+ completedPostRequirements?: any;
4828
+ pendingUserFormsIds?: any;
4829
+ linkedForms?: any;
4830
+ media?: any;
4831
+ reviewInfo?: any;
4832
+ finalizedDetails?: any;
4833
+ isArchived?: boolean | undefined;
4834
+ }>, {
4835
+ updatedAt?: any;
4836
+ status?: AppointmentStatus | undefined;
4837
+ practitionerId?: string | undefined;
4838
+ cost?: number | undefined;
4839
+ calendarEventId?: string | undefined;
4840
+ clinicBranchId?: string | undefined;
4841
+ appointmentStartTime?: any;
4842
+ appointmentEndTime?: any;
4843
+ patientNotes?: any;
4844
+ confirmationTime?: any;
4845
+ cancellationTime?: any;
4846
+ rescheduleTime?: any;
4847
+ procedureActualStartTime?: any;
4848
+ actualDurationMinutes?: number | undefined;
4849
+ cancellationReason?: string | null | undefined;
4850
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4851
+ internalNotes?: string | null | undefined;
4852
+ paymentStatus?: PaymentStatus | undefined;
4853
+ paymentTransactionId?: any;
4854
+ completedPreRequirements?: any;
4855
+ completedPostRequirements?: any;
4856
+ pendingUserFormsIds?: any;
4857
+ linkedForms?: any;
4858
+ media?: any;
4859
+ reviewInfo?: any;
4860
+ finalizedDetails?: any;
4861
+ isArchived?: boolean | undefined;
4862
+ }, {
4863
+ updatedAt?: any;
4864
+ status?: AppointmentStatus | undefined;
4865
+ practitionerId?: string | undefined;
4866
+ cost?: number | undefined;
4867
+ calendarEventId?: string | undefined;
4868
+ clinicBranchId?: string | undefined;
4869
+ appointmentStartTime?: any;
4870
+ appointmentEndTime?: any;
4871
+ patientNotes?: any;
4872
+ confirmationTime?: any;
4873
+ cancellationTime?: any;
4874
+ rescheduleTime?: any;
4875
+ procedureActualStartTime?: any;
4876
+ actualDurationMinutes?: number | undefined;
4877
+ cancellationReason?: string | null | undefined;
4878
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4879
+ internalNotes?: string | null | undefined;
4880
+ paymentStatus?: PaymentStatus | undefined;
4881
+ paymentTransactionId?: any;
4882
+ completedPreRequirements?: any;
4883
+ completedPostRequirements?: any;
4884
+ pendingUserFormsIds?: any;
4885
+ linkedForms?: any;
4886
+ media?: any;
4887
+ reviewInfo?: any;
4888
+ finalizedDetails?: any;
4889
+ isArchived?: boolean | undefined;
4890
+ }>, {
4891
+ updatedAt?: any;
4892
+ status?: AppointmentStatus | undefined;
4893
+ practitionerId?: string | undefined;
4894
+ cost?: number | undefined;
4895
+ calendarEventId?: string | undefined;
4896
+ clinicBranchId?: string | undefined;
4897
+ appointmentStartTime?: any;
4898
+ appointmentEndTime?: any;
4899
+ patientNotes?: any;
4900
+ confirmationTime?: any;
4901
+ cancellationTime?: any;
4902
+ rescheduleTime?: any;
4903
+ procedureActualStartTime?: any;
4904
+ actualDurationMinutes?: number | undefined;
4905
+ cancellationReason?: string | null | undefined;
4906
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4907
+ internalNotes?: string | null | undefined;
4908
+ paymentStatus?: PaymentStatus | undefined;
4909
+ paymentTransactionId?: any;
4910
+ completedPreRequirements?: any;
4911
+ completedPostRequirements?: any;
4912
+ pendingUserFormsIds?: any;
4913
+ linkedForms?: any;
4914
+ media?: any;
4915
+ reviewInfo?: any;
4916
+ finalizedDetails?: any;
4917
+ isArchived?: boolean | undefined;
4918
+ }, {
4919
+ updatedAt?: any;
4920
+ status?: AppointmentStatus | undefined;
4921
+ practitionerId?: string | undefined;
4922
+ cost?: number | undefined;
4923
+ calendarEventId?: string | undefined;
4924
+ clinicBranchId?: string | undefined;
4925
+ appointmentStartTime?: any;
4926
+ appointmentEndTime?: any;
4927
+ patientNotes?: any;
4928
+ confirmationTime?: any;
4929
+ cancellationTime?: any;
4930
+ rescheduleTime?: any;
4931
+ procedureActualStartTime?: any;
4932
+ actualDurationMinutes?: number | undefined;
4933
+ cancellationReason?: string | null | undefined;
4934
+ canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
4935
+ internalNotes?: string | null | undefined;
4936
+ paymentStatus?: PaymentStatus | undefined;
4937
+ paymentTransactionId?: any;
4938
+ completedPreRequirements?: any;
4939
+ completedPostRequirements?: any;
4940
+ pendingUserFormsIds?: any;
4941
+ linkedForms?: any;
4942
+ media?: any;
4943
+ reviewInfo?: any;
4944
+ finalizedDetails?: any;
4945
+ isArchived?: boolean | undefined;
4946
+ }>;
4947
+ /**
4948
+ * Schema for validating appointment search parameters
4949
+ */
4950
+ declare const searchAppointmentsSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
4951
+ patientId: z.ZodOptional<z.ZodString>;
4952
+ practitionerId: z.ZodOptional<z.ZodString>;
4953
+ clinicBranchId: z.ZodOptional<z.ZodString>;
4954
+ startDate: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4955
+ endDate: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
4956
+ status: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<typeof AppointmentStatus>, z.ZodArray<z.ZodNativeEnum<typeof AppointmentStatus>, "atleastone">]>>;
4957
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4958
+ startAfter: z.ZodOptional<z.ZodAny>;
4959
+ }, "strip", z.ZodTypeAny, {
4960
+ limit: number;
4961
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
4962
+ patientId?: string | undefined;
4963
+ startDate?: any;
4964
+ endDate?: any;
4965
+ practitionerId?: string | undefined;
4966
+ startAfter?: any;
4967
+ clinicBranchId?: string | undefined;
4968
+ }, {
4969
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
4970
+ patientId?: string | undefined;
4971
+ startDate?: any;
4972
+ endDate?: any;
4973
+ practitionerId?: string | undefined;
4974
+ limit?: number | undefined;
4975
+ startAfter?: any;
4976
+ clinicBranchId?: string | undefined;
4977
+ }>, {
4978
+ limit: number;
4979
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
4980
+ patientId?: string | undefined;
4981
+ startDate?: any;
4982
+ endDate?: any;
4983
+ practitionerId?: string | undefined;
4984
+ startAfter?: any;
4985
+ clinicBranchId?: string | undefined;
4986
+ }, {
4987
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
4988
+ patientId?: string | undefined;
4989
+ startDate?: any;
4990
+ endDate?: any;
4991
+ practitionerId?: string | undefined;
4992
+ limit?: number | undefined;
4993
+ startAfter?: any;
4994
+ clinicBranchId?: string | undefined;
4995
+ }>, {
4996
+ limit: number;
4997
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
4998
+ patientId?: string | undefined;
4999
+ startDate?: any;
5000
+ endDate?: any;
5001
+ practitionerId?: string | undefined;
5002
+ startAfter?: any;
5003
+ clinicBranchId?: string | undefined;
5004
+ }, {
5005
+ status?: AppointmentStatus | [AppointmentStatus, ...AppointmentStatus[]] | undefined;
5006
+ patientId?: string | undefined;
5007
+ startDate?: any;
5008
+ endDate?: any;
5009
+ practitionerId?: string | undefined;
5010
+ limit?: number | undefined;
5011
+ startAfter?: any;
5012
+ clinicBranchId?: string | undefined;
5013
+ }>;
5014
+
5015
+ interface FirebaseInstance {
5016
+ app: FirebaseApp;
5017
+ db: Firestore;
5018
+ auth: Auth;
5019
+ analytics: Analytics | null;
5020
+ }
5021
+ declare const initializeFirebase: (config: {
5022
+ apiKey: string;
5023
+ authDomain: string;
5024
+ projectId: string;
5025
+ storageBucket: string;
5026
+ messagingSenderId: string;
5027
+ appId: string;
5028
+ measurementId?: string;
5029
+ }) => FirebaseInstance;
5030
+ declare const getFirebaseInstance: () => Promise<FirebaseInstance>;
5031
+ declare const getFirebaseAuth: () => Promise<Auth>;
5032
+ declare const getFirebaseDB: () => Promise<Firestore>;
5033
+ declare const getFirebaseApp: () => Promise<FirebaseApp>;
5034
+
4422
5035
  /**
4423
5036
  * Enum for synced calendar provider
4424
5037
  */
@@ -5379,10 +5992,19 @@ declare class AuthService extends BaseService {
5379
5992
  * Enumeracija koja definiše sve moguće tipove notifikacija
5380
5993
  */
5381
5994
  declare enum NotificationType {
5382
- PRE_REQUIREMENT = "preRequirement",
5383
- POST_REQUIREMENT = "postRequirement",
5384
- APPOINTMENT_REMINDER = "appointmentReminder",
5385
- APPOINTMENT_NOTIFICATION = "appointmentNotification"
5995
+ APPOINTMENT_REMINDER = "appointmentReminder",// For upcoming appointments
5996
+ APPOINTMENT_STATUS_CHANGE = "appointmentStatusChange",// Generic for status changes like confirmed, checked-in etc.
5997
+ APPOINTMENT_RESCHEDULED_PROPOSAL = "appointmentRescheduledProposal",// When clinic proposes a new time
5998
+ APPOINTMENT_CANCELLED = "appointmentCancelled",// When an appointment is cancelled
5999
+ REQUIREMENT_INSTRUCTION_DUE = "requirementInstructionDue",// For specific pre/post care instructions
6000
+ FORM_REMINDER = "formReminder",// Reminds user to fill a specific form
6001
+ FORM_SUBMISSION_CONFIRMATION = "formSubmissionConfirmation",// Confirms form was submitted
6002
+ REVIEW_REQUEST = "reviewRequest",// Request for patient review post-appointment
6003
+ PAYMENT_DUE = "paymentDue",
6004
+ PAYMENT_CONFIRMATION = "paymentConfirmation",
6005
+ PAYMENT_FAILED = "paymentFailed",
6006
+ GENERAL_MESSAGE = "generalMessage",// For general announcements or direct messages
6007
+ ACCOUNT_NOTIFICATION = "accountNotification"
5386
6008
  }
5387
6009
  /**
5388
6010
  * Bazni interfejs za sve notifikacije
@@ -5416,14 +6038,22 @@ interface BaseNotification {
5416
6038
  isRead: boolean;
5417
6039
  /** Uloga korisnika kome je namenjena notifikacija */
5418
6040
  userRole: UserRole;
6041
+ appointmentId?: string;
6042
+ patientRequirementInstanceId?: string;
6043
+ instructionId?: string;
6044
+ formId?: string;
6045
+ originalRequirementId?: string;
6046
+ transactionId?: string;
5419
6047
  }
5420
6048
  /**
5421
6049
  * Status notifikacije
5422
6050
  */
5423
6051
  declare enum NotificationStatus {
5424
6052
  PENDING = "pending",
6053
+ PROCESSING = "processing",
5425
6054
  SENT = "sent",
5426
6055
  FAILED = "failed",
6056
+ DELIVERED = "delivered",
5427
6057
  CANCELLED = "cancelled",
5428
6058
  PARTIAL_SUCCESS = "partialSuccess"
5429
6059
  }
@@ -5431,7 +6061,7 @@ declare enum NotificationStatus {
5431
6061
  * Notifikacija za pre-requirement
5432
6062
  */
5433
6063
  interface PreRequirementNotification extends BaseNotification {
5434
- notificationType: NotificationType.PRE_REQUIREMENT;
6064
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
5435
6065
  /** ID tretmana za koji je vezan pre-requirement */
5436
6066
  treatmentId: string;
5437
6067
  /** Lista pre-requirements koji treba da se ispune */
@@ -5443,7 +6073,7 @@ interface PreRequirementNotification extends BaseNotification {
5443
6073
  * Notifikacija za post-requirement
5444
6074
  */
5445
6075
  interface PostRequirementNotification extends BaseNotification {
5446
- notificationType: NotificationType.POST_REQUIREMENT;
6076
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
5447
6077
  /** ID tretmana za koji je vezan post-requirement */
5448
6078
  treatmentId: string;
5449
6079
  /** Lista post-requirements koji treba da se ispune */
@@ -5452,37 +6082,108 @@ interface PostRequirementNotification extends BaseNotification {
5452
6082
  deadline: Timestamp;
5453
6083
  }
5454
6084
  /**
5455
- * Notifikacija za podsetnik o zakazanom terminu
6085
+ * Notification for a specific instruction from a PatientRequirementInstance.
6086
+ * Example: "Do not eat 2 hours before your [Procedure Name] appointment."
6087
+ */
6088
+ interface RequirementInstructionDueNotification extends BaseNotification {
6089
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6090
+ appointmentId: string;
6091
+ patientRequirementInstanceId: string;
6092
+ instructionId: string;
6093
+ }
6094
+ /**
6095
+ * Notification reminding about an upcoming appointment.
6096
+ * Example: "Reminder: Your appointment for [Procedure Name] is at [Time] today."
5456
6097
  */
5457
6098
  interface AppointmentReminderNotification extends BaseNotification {
5458
6099
  notificationType: NotificationType.APPOINTMENT_REMINDER;
5459
- /** ID zakazanog termina */
5460
6100
  appointmentId: string;
5461
- /** Vreme termina */
5462
6101
  appointmentTime: Timestamp;
5463
- /** Tip tretmana */
5464
- treatmentType: string;
5465
- /** Ime doktora */
5466
- doctorName: string;
6102
+ procedureName?: string;
6103
+ practitionerName?: string;
6104
+ clinicName?: string;
5467
6105
  }
5468
6106
  /**
5469
- * Notifikacija o promeni statusa termina
6107
+ * Notification about a change in appointment status (e.g., confirmed, checked-in).
6108
+ * Excludes cancellations and reschedule proposals, which have their own types.
6109
+ * Example: "Your appointment for [Procedure Name] has been Confirmed."
5470
6110
  */
5471
- interface AppointmentNotification extends BaseNotification {
5472
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
5473
- /** ID zakazanog termina */
6111
+ interface AppointmentStatusChangeNotification extends BaseNotification {
6112
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
6113
+ appointmentId: string;
6114
+ newStatus: string;
6115
+ previousStatus?: string;
6116
+ procedureName?: string;
6117
+ }
6118
+ /**
6119
+ * Notification informing the patient that the clinic has proposed a new time for their appointment.
6120
+ * Example: "Action Required: [Clinic Name] has proposed a new time for your [Procedure Name] appointment."
6121
+ */
6122
+ interface AppointmentRescheduledProposalNotification extends BaseNotification {
6123
+ notificationType: NotificationType.APPOINTMENT_RESCHEDULED_PROPOSAL;
6124
+ appointmentId: string;
6125
+ newProposedStartTime: Timestamp;
6126
+ newProposedEndTime: Timestamp;
6127
+ procedureName?: string;
6128
+ }
6129
+ /**
6130
+ * Notification informing about a cancelled appointment.
6131
+ * Example: "Your appointment for [Procedure Name] on [Date] has been cancelled."
6132
+ */
6133
+ interface AppointmentCancelledNotification extends BaseNotification {
6134
+ notificationType: NotificationType.APPOINTMENT_CANCELLED;
5474
6135
  appointmentId: string;
5475
- /** Novi status termina */
5476
- appointmentStatus: string;
5477
- /** Prethodni status termina */
5478
- previousStatus: string;
5479
- /** Razlog promene (opciono) */
5480
6136
  reason?: string;
6137
+ cancelledByRole?: UserRole;
6138
+ procedureName?: string;
6139
+ }
6140
+ /**
6141
+ * Notification reminding a user to fill a specific form.
6142
+ * Example: "Reminder: Please complete the '[Form Name]' form for your upcoming appointment."
6143
+ */
6144
+ interface FormReminderNotification extends BaseNotification {
6145
+ notificationType: NotificationType.FORM_REMINDER;
6146
+ appointmentId: string;
6147
+ formId: string;
6148
+ formName: string;
6149
+ formDeadline?: Timestamp;
6150
+ }
6151
+ /**
6152
+ * Notification confirming a form submission.
6153
+ * Example: "Thank you! Your '[Form Name]' form has been submitted successfully."
6154
+ */
6155
+ interface FormSubmissionConfirmationNotification extends BaseNotification {
6156
+ notificationType: NotificationType.FORM_SUBMISSION_CONFIRMATION;
6157
+ appointmentId?: string;
6158
+ formId: string;
6159
+ formName: string;
6160
+ }
6161
+ /**
6162
+ * Notification requesting a patient to leave a review after an appointment.
6163
+ * Example: "Hope you had a great experience! Would you like to share your feedback for your visit on [Date]?"
6164
+ */
6165
+ interface ReviewRequestNotification extends BaseNotification {
6166
+ notificationType: NotificationType.REVIEW_REQUEST;
6167
+ appointmentId: string;
6168
+ practitionerName?: string;
6169
+ procedureName?: string;
6170
+ }
6171
+ /**
6172
+ * Generic notification for direct messages or announcements.
6173
+ */
6174
+ interface GeneralMessageNotification extends BaseNotification {
6175
+ notificationType: NotificationType.GENERAL_MESSAGE;
6176
+ }
6177
+ interface PaymentConfirmationNotification extends BaseNotification {
6178
+ notificationType: NotificationType.PAYMENT_CONFIRMATION;
6179
+ transactionId: string;
6180
+ appointmentId?: string;
6181
+ amount: string;
5481
6182
  }
5482
6183
  /**
5483
6184
  * Unija svih tipova notifikacija
5484
6185
  */
5485
- type Notification = PreRequirementNotification | PostRequirementNotification | AppointmentReminderNotification | AppointmentNotification;
6186
+ type Notification = PreRequirementNotification | PostRequirementNotification | RequirementInstructionDueNotification | AppointmentReminderNotification | AppointmentStatusChangeNotification | AppointmentRescheduledProposalNotification | AppointmentCancelledNotification | FormReminderNotification | FormSubmissionConfirmationNotification | ReviewRequestNotification | GeneralMessageNotification | PaymentConfirmationNotification;
5486
6187
 
5487
6188
  declare class NotificationService extends BaseService {
5488
6189
  /**
@@ -5719,39 +6420,72 @@ declare class DocumentationTemplateService extends BaseService {
5719
6420
  }
5720
6421
 
5721
6422
  /**
5722
- * Service for managing filled documents
6423
+ * Service for managing filled documents within appointment subcollections
5723
6424
  */
5724
6425
  declare class FilledDocumentService extends BaseService {
5725
- private readonly collectionRef;
5726
6426
  private readonly templateService;
5727
6427
  constructor(...args: ConstructorParameters<typeof BaseService>);
6428
+ private getFormSubcollectionPath;
6429
+ /**
6430
+ * Create a new filled document within an appointment's subcollection.
6431
+ * @param templateId - ID of the template to use.
6432
+ * @param appointmentId - ID of the appointment this form belongs to.
6433
+ * @param procedureId - ID of the procedure associated with this form.
6434
+ * @param patientId - ID of the patient.
6435
+ * @param practitionerId - ID of the practitioner (can be system/generic if patient is filling).
6436
+ * @param clinicId - ID of the clinic.
6437
+ * @param initialValues - Optional initial values for the form elements.
6438
+ * @param initialStatus - Optional initial status for the form.
6439
+ * @returns The created filled document.
6440
+ */
6441
+ createFilledDocumentForAppointment(templateId: string, appointmentId: string, procedureId: string, patientId: string, practitionerId: string, // Consider if this is always available or if a placeholder is needed
6442
+ clinicId: string, // Same consideration as practitionerId
6443
+ initialValues?: {
6444
+ [elementId: string]: any;
6445
+ }, initialStatus?: FilledDocumentStatus): Promise<FilledDocument>;
5728
6446
  /**
5729
- * Create a new filled document
5730
- * @param templateId - ID of the template to use
5731
- * @param patientId - ID of the patient
5732
- * @param practitionerId - ID of the practitioner
5733
- * @param clinicId - ID of the clinic
5734
- * @returns The created filled document
5735
- */
5736
- createFilledDocument(templateId: string, patientId: string, practitionerId: string, clinicId: string): Promise<FilledDocument>;
5737
- /**
5738
- * Get a filled document by ID
5739
- * @param documentId - ID of the filled document to retrieve
5740
- * @returns The filled document or null if not found
6447
+ * Get a specific filled document from an appointment's subcollection.
6448
+ * @param appointmentId - ID of the appointment.
6449
+ * @param formId - ID of the filled document.
6450
+ * @param isUserForm - Boolean indicating if it's a user form or doctor form.
6451
+ * @returns The filled document or null if not found.
5741
6452
  */
5742
- getFilledDocumentById(documentId: string): Promise<FilledDocument | null>;
6453
+ getFilledDocumentFromAppointmentById(appointmentId: string, formId: string, isUserForm: boolean): Promise<FilledDocument | null>;
5743
6454
  /**
5744
- * Update values in a filled document
5745
- * @param documentId - ID of the filled document to update
5746
- * @param values - Updated values for elements
5747
- * @param status - Optional new status for the document
5748
- * @returns The updated filled document
6455
+ * Update values or status in a filled document within an appointment's subcollection.
6456
+ * @param appointmentId - ID of the appointment.
6457
+ * @param formId - ID of the filled document to update.
6458
+ * @param isUserForm - Boolean indicating if it's a user form or doctor form.
6459
+ * @param values - Updated values for elements.
6460
+ * @param status - Optional new status for the document.
6461
+ * @returns The updated filled document.
5749
6462
  */
5750
- updateFilledDocument(documentId: string, values: {
6463
+ updateFilledDocumentInAppointment(appointmentId: string, formId: string, isUserForm: boolean, values?: {
5751
6464
  [elementId: string]: any;
5752
6465
  }, status?: FilledDocumentStatus): Promise<FilledDocument>;
5753
6466
  /**
5754
- * Get filled documents for a patient
6467
+ * Get all filled user forms for a specific appointment.
6468
+ * @param appointmentId ID of the appointment.
6469
+ * @param pageSize Number of documents to retrieve.
6470
+ * @param lastDoc Last document from previous page for pagination.
6471
+ */
6472
+ getFilledUserFormsForAppointment(appointmentId: string, pageSize?: number, lastDoc?: QueryDocumentSnapshot<FilledDocument>): Promise<{
6473
+ documents: FilledDocument[];
6474
+ lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
6475
+ }>;
6476
+ /**
6477
+ * Get all filled doctor forms for a specific appointment.
6478
+ * @param appointmentId ID of the appointment.
6479
+ * @param pageSize Number of documents to retrieve.
6480
+ * @param lastDoc Last document from previous page for pagination.
6481
+ */
6482
+ getFilledDoctorFormsForAppointment(appointmentId: string, pageSize?: number, lastDoc?: QueryDocumentSnapshot<FilledDocument>): Promise<{
6483
+ documents: FilledDocument[];
6484
+ lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
6485
+ }>;
6486
+ private executeQuery;
6487
+ /**
6488
+ * Get filled documents for a patient (NEEDS REWORK for subcollections or Collection Group Query)
5755
6489
  * @param patientId - ID of the patient
5756
6490
  * @param pageSize - Number of documents to retrieve
5757
6491
  * @param lastDoc - Last document from previous page for pagination
@@ -5762,7 +6496,7 @@ declare class FilledDocumentService extends BaseService {
5762
6496
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5763
6497
  }>;
5764
6498
  /**
5765
- * Get filled documents for a practitioner
6499
+ * Get filled documents for a practitioner (NEEDS REWORK for subcollections or Collection Group Query)
5766
6500
  * @param practitionerId - ID of the practitioner
5767
6501
  * @param pageSize - Number of documents to retrieve
5768
6502
  * @param lastDoc - Last document from previous page for pagination
@@ -5773,7 +6507,7 @@ declare class FilledDocumentService extends BaseService {
5773
6507
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5774
6508
  }>;
5775
6509
  /**
5776
- * Get filled documents for a clinic
6510
+ * Get filled documents for a clinic (NEEDS REWORK for subcollections or Collection Group Query)
5777
6511
  * @param clinicId - ID of the clinic
5778
6512
  * @param pageSize - Number of documents to retrieve
5779
6513
  * @param lastDoc - Last document from previous page for pagination
@@ -5784,7 +6518,7 @@ declare class FilledDocumentService extends BaseService {
5784
6518
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5785
6519
  }>;
5786
6520
  /**
5787
- * Get filled documents by template
6521
+ * Get filled documents by template (NEEDS REWORK for subcollections or Collection Group Query)
5788
6522
  * @param templateId - ID of the template
5789
6523
  * @param pageSize - Number of documents to retrieve
5790
6524
  * @param lastDoc - Last document from previous page for pagination
@@ -5795,7 +6529,7 @@ declare class FilledDocumentService extends BaseService {
5795
6529
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5796
6530
  }>;
5797
6531
  /**
5798
- * Get filled documents by status
6532
+ * Get filled documents by status (NEEDS REWORK for subcollections or Collection Group Query)
5799
6533
  * @param status - Status to filter by
5800
6534
  * @param pageSize - Number of documents to retrieve
5801
6535
  * @param lastDoc - Last document from previous page for pagination
@@ -6438,6 +7172,7 @@ declare class AppointmentService extends BaseService {
6438
7172
  private patientService;
6439
7173
  private practitionerService;
6440
7174
  private clinicService;
7175
+ private filledDocumentService;
6441
7176
  private functions;
6442
7177
  /**
6443
7178
  * Creates a new AppointmentService instance.
@@ -6450,7 +7185,7 @@ declare class AppointmentService extends BaseService {
6450
7185
  * @param practitionerService Practitioner service instance
6451
7186
  * @param clinicService Clinic service instance
6452
7187
  */
6453
- constructor(db: Firestore, auth: Auth, app: FirebaseApp, calendarService: CalendarServiceV2, patientService: PatientService, practitionerService: PractitionerService, clinicService: ClinicService);
7188
+ constructor(db: Firestore, auth: Auth, app: FirebaseApp, calendarService: CalendarServiceV2, patientService: PatientService, practitionerService: PractitionerService, clinicService: ClinicService, filledDocumentService: FilledDocumentService);
6454
7189
  /**
6455
7190
  * Test method using the callable function version of getAvailableBookingSlots
6456
7191
  * For development and testing purposes only - not for production use
@@ -6575,70 +7310,71 @@ declare class AppointmentService extends BaseService {
6575
7310
  *
6576
7311
  * @param appointmentId ID of the appointment
6577
7312
  * @param newStatus New status to set
6578
- * @param cancellationReason Required if canceling the appointment
6579
- * @param canceledBy Required if canceling the appointment
7313
+ * @param details Optional details for the status change
6580
7314
  * @returns The updated appointment
6581
7315
  */
6582
- updateAppointmentStatus(appointmentId: string, newStatus: AppointmentStatus, cancellationReason?: string, canceledBy?: "patient" | "clinic" | "practitioner" | "system"): Promise<Appointment>;
7316
+ updateAppointmentStatus(appointmentId: string, newStatus: AppointmentStatus, details?: {
7317
+ cancellationReason?: string;
7318
+ canceledBy?: "patient" | "clinic" | "practitioner" | "system";
7319
+ }): Promise<Appointment>;
6583
7320
  /**
6584
- * Confirms an appointment.
6585
- *
6586
- * @param appointmentId ID of the appointment to confirm
6587
- * @returns The confirmed appointment
7321
+ * Confirms a PENDING appointment by an Admin/Clinic.
6588
7322
  */
6589
- confirmAppointment(appointmentId: string): Promise<Appointment>;
7323
+ confirmAppointmentAdmin(appointmentId: string): Promise<Appointment>;
6590
7324
  /**
6591
- * Cancels an appointment from the clinic side.
6592
- *
6593
- * @param appointmentId ID of the appointment to cancel
6594
- * @param reason Reason for cancellation
6595
- * @returns The canceled appointment
7325
+ * Cancels an appointment by the User (Patient).
6596
7326
  */
6597
- cancelAppointmentByClinic(appointmentId: string, reason: string): Promise<Appointment>;
7327
+ cancelAppointmentUser(appointmentId: string, reason: string): Promise<Appointment>;
6598
7328
  /**
6599
- * Cancels an appointment from the patient side.
6600
- *
6601
- * @param appointmentId ID of the appointment to cancel
6602
- * @param reason Reason for cancellation
6603
- * @returns The canceled appointment
7329
+ * Cancels an appointment by an Admin/Clinic.
6604
7330
  */
6605
- cancelAppointmentByPatient(appointmentId: string, reason: string): Promise<Appointment>;
7331
+ cancelAppointmentAdmin(appointmentId: string, reason: string): Promise<Appointment>;
6606
7332
  /**
6607
- * Marks an appointment as checked in.
6608
- *
6609
- * @param appointmentId ID of the appointment
6610
- * @returns The updated appointment
7333
+ * Admin proposes to reschedule an appointment.
7334
+ * Sets status to RESCHEDULED_BY_CLINIC and updates times.
6611
7335
  */
6612
- checkInAppointment(appointmentId: string): Promise<Appointment>;
7336
+ rescheduleAppointmentAdmin(appointmentId: string, newStartTime: Timestamp, newEndTime: Timestamp): Promise<Appointment>;
6613
7337
  /**
6614
- * Marks an appointment as in progress.
6615
- *
6616
- * @param appointmentId ID of the appointment
6617
- * @returns The updated appointment
7338
+ * User confirms a reschedule proposed by the clinic.
7339
+ * Status changes from RESCHEDULED_BY_CLINIC to CONFIRMED.
6618
7340
  */
6619
- startAppointment(appointmentId: string): Promise<Appointment>;
7341
+ rescheduleAppointmentConfirmUser(appointmentId: string): Promise<Appointment>;
6620
7342
  /**
6621
- * Marks an appointment as completed.
6622
- *
6623
- * @param appointmentId ID of the appointment
6624
- * @param actualDurationMinutes Actual duration of the appointment in minutes
6625
- * @returns The updated appointment
7343
+ * User rejects a reschedule proposed by the clinic.
7344
+ * Status changes from RESCHEDULED_BY_CLINIC to CANCELED_PATIENT_RESCHEDULED.
6626
7345
  */
6627
- completeAppointment(appointmentId: string, actualDurationMinutes?: number): Promise<Appointment>;
7346
+ rescheduleAppointmentRejectUser(appointmentId: string, reason: string): Promise<Appointment>;
6628
7347
  /**
6629
- * Marks an appointment as no-show.
6630
- *
6631
- * @param appointmentId ID of the appointment
6632
- * @returns The updated appointment
7348
+ * Admin checks in a patient for their appointment.
7349
+ * Requires all pending user forms to be completed.
7350
+ */
7351
+ checkInPatientAdmin(appointmentId: string): Promise<Appointment>;
7352
+ /**
7353
+ * Doctor starts the appointment procedure.
7354
+ */
7355
+ startAppointmentDoctor(appointmentId: string): Promise<Appointment>;
7356
+ /**
7357
+ * Doctor completes and finalizes the appointment.
7358
+ */
7359
+ completeAppointmentDoctor(appointmentId: string, finalizationNotes: string, actualDurationMinutesInput?: number): Promise<Appointment>;
7360
+ /**
7361
+ * Admin marks an appointment as No-Show.
7362
+ */
7363
+ markNoShowAdmin(appointmentId: string): Promise<Appointment>;
7364
+ /**
7365
+ * Adds a media item to an appointment.
7366
+ */
7367
+ addMediaToAppointment(appointmentId: string, mediaItemData: Omit<AppointmentMediaItem, "id" | "uploadedAt">): Promise<Appointment>;
7368
+ /**
7369
+ * Removes a media item from an appointment.
7370
+ */
7371
+ removeMediaFromAppointment(appointmentId: string, mediaItemId: string): Promise<Appointment>;
7372
+ /**
7373
+ * Adds or updates review information for an appointment.
6633
7374
  */
6634
- markNoShow(appointmentId: string): Promise<Appointment>;
7375
+ addReviewToAppointment(appointmentId: string, reviewData: Omit<PatientReviewInfo, "reviewedAt" | "reviewId">): Promise<Appointment>;
6635
7376
  /**
6636
7377
  * Updates the payment status of an appointment.
6637
- *
6638
- * @param appointmentId ID of the appointment
6639
- * @param paymentStatus New payment status
6640
- * @param paymentTransactionId Optional transaction ID for the payment
6641
- * @returns The updated appointment
6642
7378
  */
6643
7379
  updatePaymentStatus(appointmentId: string, paymentStatus: PaymentStatus, paymentTransactionId?: string): Promise<Appointment>;
6644
7380
  /**
@@ -6672,6 +7408,116 @@ declare class AppointmentService extends BaseService {
6672
7408
  getDebugToken(): Promise<string | null>;
6673
7409
  }
6674
7410
 
7411
+ /**
7412
+ * Defines the status of a specific instruction within a PatientRequirementInstance.
7413
+ * This helps track each actionable item for the patient.
7414
+ */
7415
+ declare enum PatientInstructionStatus {
7416
+ PENDING_NOTIFICATION = "pendingNotification",// Notification is scheduled but not yet due/sent
7417
+ ACTION_DUE = "actionDue",// The time for this instruction/notification has arrived
7418
+ ACTION_TAKEN = "actionTaken",// Patient has acknowledged or completed this specific instruction
7419
+ MISSED = "missed",// The due time for this instruction passed without action
7420
+ CANCELLED = "cancelled",// This specific instruction was cancelled (e.g., requirement changed)
7421
+ SKIPPED = "skipped"
7422
+ }
7423
+ /**
7424
+ * Represents a single, timed instruction or notification point derived from a Requirement's timeframe.
7425
+ */
7426
+ interface PatientRequirementInstruction {
7427
+ instructionId: string;
7428
+ instructionText: string;
7429
+ dueTime: Timestamp;
7430
+ actionableWindow: number;
7431
+ status: PatientInstructionStatus;
7432
+ originalNotifyAtValue: number;
7433
+ originalTimeframeUnit: TimeFrame["unit"];
7434
+ notificationId?: string;
7435
+ actionTakenAt?: Timestamp;
7436
+ updatedAt: Timestamp;
7437
+ }
7438
+ /**
7439
+ * Defines the overall status of a PatientRequirementInstance.
7440
+ */
7441
+ declare enum PatientRequirementOverallStatus {
7442
+ ACTIVE = "active",// Requirement instance is active, instructions are pending or due.
7443
+ ALL_INSTRUCTIONS_MET = "allInstructionsMet",// All instructions actioned/completed by the patient.
7444
+ PARTIALLY_COMPLETED = "partiallyCompleted",// Some instructions met, some missed or pending.
7445
+ FAILED = "failed",// The patient failed to complete the requirement on time and above treashold of 60%
7446
+ CANCELLED_APPOINTMENT = "cancelledAppointment",// Entire requirement instance cancelled due to appointment cancellation.
7447
+ SUPERSEDED_RESCHEDULE = "supersededReschedule",// This instance was replaced by a new one due to appointment reschedule.
7448
+ FAILED_TO_PROCESS = "failedToProcess"
7449
+ }
7450
+ /**
7451
+ * Represents an instance of a backoffice Requirement, tailored to a specific patient and appointment.
7452
+ * This document lives in the patient's subcollection: `patients/{patientId}/patientRequirements/{instanceId}`.
7453
+ */
7454
+ interface PatientRequirementInstance {
7455
+ id: string;
7456
+ patientId: string;
7457
+ appointmentId: string;
7458
+ originalRequirementId: string;
7459
+ requirementType: RequirementType;
7460
+ requirementName: string;
7461
+ requirementDescription: string;
7462
+ requirementImportance: RequirementImportance;
7463
+ overallStatus: PatientRequirementOverallStatus;
7464
+ instructions: PatientRequirementInstruction[];
7465
+ createdAt: Timestamp;
7466
+ updatedAt: Timestamp;
7467
+ }
7468
+ /**
7469
+ * Firestore subcollection name for patient requirement instances.
7470
+ */
7471
+ declare const PATIENT_REQUIREMENTS_SUBCOLLECTION_NAME = "patientRequirements";
7472
+
7473
+ /**
7474
+ * Interface for filtering active patient requirements.
7475
+ */
7476
+ interface PatientRequirementsFilters {
7477
+ appointmentId?: string | "all";
7478
+ statuses?: PatientRequirementOverallStatus[];
7479
+ instructionStatuses?: PatientInstructionStatus[];
7480
+ dueBefore?: Timestamp;
7481
+ dueAfter?: Timestamp;
7482
+ }
7483
+ declare class PatientRequirementsService extends BaseService {
7484
+ constructor(db: Firestore, auth: Auth, app: FirebaseApp);
7485
+ private getPatientRequirementsCollectionRef;
7486
+ private getPatientRequirementDocRef;
7487
+ /**
7488
+ * Gets a specific patient requirement instance by its ID.
7489
+ * @param patientId - The ID of the patient.
7490
+ * @param instanceId - The ID of the requirement instance.
7491
+ * @returns The patient requirement instance or null if not found.
7492
+ */
7493
+ getPatientRequirementInstance(patientId: string, instanceId: string): Promise<PatientRequirementInstance | null>;
7494
+ /**
7495
+ * Retrieves patient requirement instances based on specified filters.
7496
+ * This is a flexible query method.
7497
+ *
7498
+ * @param patientId - The ID of the patient.
7499
+ * @param filters - Optional filters for appointmentId, overall statuses, instruction statuses, and due timeframes.
7500
+ * @param pageLimit - Optional limit for pagination.
7501
+ * @param lastVisible - Optional last document snapshot for pagination.
7502
+ * @returns A promise resolving to an array of matching patient requirement instances and the last document snapshot.
7503
+ */
7504
+ getAllPatientRequirementInstances(patientId: string, filters?: PatientRequirementsFilters, pageLimit?: number, lastVisible?: DocumentSnapshot): Promise<{
7505
+ requirements: PatientRequirementInstance[];
7506
+ lastDoc: DocumentSnapshot | null;
7507
+ }>;
7508
+ /**
7509
+ * Marks a specific instruction within a PatientRequirementInstance as ACTION_TAKEN.
7510
+ * If all instructions are actioned, updates the overallStatus of the instance.
7511
+ *
7512
+ * @param patientId - The ID of the patient.
7513
+ * @param instanceId - The ID of the PatientRequirementInstance.
7514
+ * @param instructionId - The ID of the instruction to complete.
7515
+ * @returns The updated PatientRequirementInstance.
7516
+ * @throws Error if the instance or instruction is not found, or if the instruction is not in a completable state.
7517
+ */
7518
+ completeInstruction(patientId: string, instanceId: string, instructionId: string): Promise<PatientRequirementInstance>;
7519
+ }
7520
+
6675
7521
  declare class AuthError extends Error {
6676
7522
  code: string;
6677
7523
  status: number;
@@ -6894,7 +7740,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6894
7740
  isRead: z.ZodBoolean;
6895
7741
  userRole: z.ZodNativeEnum<typeof UserRole>;
6896
7742
  }, {
6897
- notificationType: z.ZodLiteral<NotificationType.PRE_REQUIREMENT>;
7743
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
6898
7744
  treatmentId: z.ZodString;
6899
7745
  requirements: z.ZodArray<z.ZodString, "many">;
6900
7746
  deadline: z.ZodAny;
@@ -6902,7 +7748,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6902
7748
  status: NotificationStatus;
6903
7749
  title: string;
6904
7750
  requirements: string[];
6905
- notificationType: NotificationType.PRE_REQUIREMENT;
7751
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6906
7752
  treatmentId: string;
6907
7753
  userId: string;
6908
7754
  notificationTokens: string[];
@@ -6918,7 +7764,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6918
7764
  status: NotificationStatus;
6919
7765
  title: string;
6920
7766
  requirements: string[];
6921
- notificationType: NotificationType.PRE_REQUIREMENT;
7767
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6922
7768
  treatmentId: string;
6923
7769
  userId: string;
6924
7770
  notificationTokens: string[];
@@ -6948,7 +7794,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6948
7794
  isRead: z.ZodBoolean;
6949
7795
  userRole: z.ZodNativeEnum<typeof UserRole>;
6950
7796
  }, {
6951
- notificationType: z.ZodLiteral<NotificationType.POST_REQUIREMENT>;
7797
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
6952
7798
  treatmentId: z.ZodString;
6953
7799
  requirements: z.ZodArray<z.ZodString, "many">;
6954
7800
  deadline: z.ZodAny;
@@ -6956,7 +7802,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6956
7802
  status: NotificationStatus;
6957
7803
  title: string;
6958
7804
  requirements: string[];
6959
- notificationType: NotificationType.POST_REQUIREMENT;
7805
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6960
7806
  treatmentId: string;
6961
7807
  userId: string;
6962
7808
  notificationTokens: string[];
@@ -6972,7 +7818,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6972
7818
  status: NotificationStatus;
6973
7819
  title: string;
6974
7820
  requirements: string[];
6975
- notificationType: NotificationType.POST_REQUIREMENT;
7821
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6976
7822
  treatmentId: string;
6977
7823
  userId: string;
6978
7824
  notificationTokens: string[];
@@ -7059,7 +7905,7 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7059
7905
  isRead: z.ZodBoolean;
7060
7906
  userRole: z.ZodNativeEnum<typeof UserRole>;
7061
7907
  }, {
7062
- notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_NOTIFICATION>;
7908
+ notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_STATUS_CHANGE>;
7063
7909
  appointmentId: z.ZodString;
7064
7910
  appointmentStatus: z.ZodString;
7065
7911
  previousStatus: z.ZodString;
@@ -7068,14 +7914,14 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7068
7914
  status: NotificationStatus;
7069
7915
  title: string;
7070
7916
  appointmentId: string;
7071
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
7917
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7072
7918
  userId: string;
7073
7919
  notificationTokens: string[];
7074
7920
  body: string;
7075
7921
  isRead: boolean;
7076
7922
  userRole: UserRole;
7077
- appointmentStatus: string;
7078
7923
  previousStatus: string;
7924
+ appointmentStatus: string;
7079
7925
  id?: string | undefined;
7080
7926
  createdAt?: any;
7081
7927
  updatedAt?: any;
@@ -7085,14 +7931,14 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7085
7931
  status: NotificationStatus;
7086
7932
  title: string;
7087
7933
  appointmentId: string;
7088
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
7934
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7089
7935
  userId: string;
7090
7936
  notificationTokens: string[];
7091
7937
  body: string;
7092
7938
  isRead: boolean;
7093
7939
  userRole: UserRole;
7094
- appointmentStatus: string;
7095
7940
  previousStatus: string;
7941
+ appointmentStatus: string;
7096
7942
  id?: string | undefined;
7097
7943
  createdAt?: any;
7098
7944
  updatedAt?: any;
@@ -7116,7 +7962,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7116
7962
  isRead: z.ZodBoolean;
7117
7963
  userRole: z.ZodNativeEnum<typeof UserRole>;
7118
7964
  }, {
7119
- notificationType: z.ZodLiteral<NotificationType.PRE_REQUIREMENT>;
7965
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
7120
7966
  treatmentId: z.ZodString;
7121
7967
  requirements: z.ZodArray<z.ZodString, "many">;
7122
7968
  deadline: z.ZodAny;
@@ -7124,7 +7970,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7124
7970
  status: NotificationStatus;
7125
7971
  title: string;
7126
7972
  requirements: string[];
7127
- notificationType: NotificationType.PRE_REQUIREMENT;
7973
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7128
7974
  treatmentId: string;
7129
7975
  userId: string;
7130
7976
  notificationTokens: string[];
@@ -7140,7 +7986,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7140
7986
  status: NotificationStatus;
7141
7987
  title: string;
7142
7988
  requirements: string[];
7143
- notificationType: NotificationType.PRE_REQUIREMENT;
7989
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7144
7990
  treatmentId: string;
7145
7991
  userId: string;
7146
7992
  notificationTokens: string[];
@@ -7166,7 +8012,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7166
8012
  isRead: z.ZodBoolean;
7167
8013
  userRole: z.ZodNativeEnum<typeof UserRole>;
7168
8014
  }, {
7169
- notificationType: z.ZodLiteral<NotificationType.POST_REQUIREMENT>;
8015
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
7170
8016
  treatmentId: z.ZodString;
7171
8017
  requirements: z.ZodArray<z.ZodString, "many">;
7172
8018
  deadline: z.ZodAny;
@@ -7174,7 +8020,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7174
8020
  status: NotificationStatus;
7175
8021
  title: string;
7176
8022
  requirements: string[];
7177
- notificationType: NotificationType.POST_REQUIREMENT;
8023
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7178
8024
  treatmentId: string;
7179
8025
  userId: string;
7180
8026
  notificationTokens: string[];
@@ -7190,7 +8036,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7190
8036
  status: NotificationStatus;
7191
8037
  title: string;
7192
8038
  requirements: string[];
7193
- notificationType: NotificationType.POST_REQUIREMENT;
8039
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7194
8040
  treatmentId: string;
7195
8041
  userId: string;
7196
8042
  notificationTokens: string[];
@@ -7269,7 +8115,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7269
8115
  isRead: z.ZodBoolean;
7270
8116
  userRole: z.ZodNativeEnum<typeof UserRole>;
7271
8117
  }, {
7272
- notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_NOTIFICATION>;
8118
+ notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_STATUS_CHANGE>;
7273
8119
  appointmentId: z.ZodString;
7274
8120
  appointmentStatus: z.ZodString;
7275
8121
  previousStatus: z.ZodString;
@@ -7278,14 +8124,14 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7278
8124
  status: NotificationStatus;
7279
8125
  title: string;
7280
8126
  appointmentId: string;
7281
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
8127
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7282
8128
  userId: string;
7283
8129
  notificationTokens: string[];
7284
8130
  body: string;
7285
8131
  isRead: boolean;
7286
8132
  userRole: UserRole;
7287
- appointmentStatus: string;
7288
8133
  previousStatus: string;
8134
+ appointmentStatus: string;
7289
8135
  id?: string | undefined;
7290
8136
  createdAt?: any;
7291
8137
  updatedAt?: any;
@@ -7295,14 +8141,14 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7295
8141
  status: NotificationStatus;
7296
8142
  title: string;
7297
8143
  appointmentId: string;
7298
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
8144
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7299
8145
  userId: string;
7300
8146
  notificationTokens: string[];
7301
8147
  body: string;
7302
8148
  isRead: boolean;
7303
8149
  userRole: UserRole;
7304
- appointmentStatus: string;
7305
8150
  previousStatus: string;
8151
+ appointmentStatus: string;
7306
8152
  id?: string | undefined;
7307
8153
  createdAt?: any;
7308
8154
  updatedAt?: any;
@@ -9715,7 +10561,7 @@ declare const practitionerCertificationSchema: z.ZodObject<{
9715
10561
  licenseNumber: string;
9716
10562
  issuingAuthority: string;
9717
10563
  issueDate: Date | Timestamp;
9718
- verificationStatus: "pending" | "verified" | "rejected";
10564
+ verificationStatus: "pending" | "rejected" | "verified";
9719
10565
  expiryDate?: Date | Timestamp | undefined;
9720
10566
  }, {
9721
10567
  level: CertificationLevel;
@@ -9723,7 +10569,7 @@ declare const practitionerCertificationSchema: z.ZodObject<{
9723
10569
  licenseNumber: string;
9724
10570
  issuingAuthority: string;
9725
10571
  issueDate: Date | Timestamp;
9726
- verificationStatus: "pending" | "verified" | "rejected";
10572
+ verificationStatus: "pending" | "rejected" | "verified";
9727
10573
  expiryDate?: Date | Timestamp | undefined;
9728
10574
  }>;
9729
10575
  declare const practitionerWorkingHoursSchema: z.ZodObject<{
@@ -10134,7 +10980,7 @@ declare const practitionerSchema: z.ZodObject<{
10134
10980
  licenseNumber: string;
10135
10981
  issuingAuthority: string;
10136
10982
  issueDate: Date | Timestamp;
10137
- verificationStatus: "pending" | "verified" | "rejected";
10983
+ verificationStatus: "pending" | "rejected" | "verified";
10138
10984
  expiryDate?: Date | Timestamp | undefined;
10139
10985
  }, {
10140
10986
  level: CertificationLevel;
@@ -10142,7 +10988,7 @@ declare const practitionerSchema: z.ZodObject<{
10142
10988
  licenseNumber: string;
10143
10989
  issuingAuthority: string;
10144
10990
  issueDate: Date | Timestamp;
10145
- verificationStatus: "pending" | "verified" | "rejected";
10991
+ verificationStatus: "pending" | "rejected" | "verified";
10146
10992
  expiryDate?: Date | Timestamp | undefined;
10147
10993
  }>;
10148
10994
  clinics: z.ZodArray<z.ZodString, "many">;
@@ -10461,9 +11307,9 @@ declare const practitionerSchema: z.ZodObject<{
10461
11307
  id: string;
10462
11308
  name: string;
10463
11309
  duration: number;
10464
- family: ProcedureFamily;
10465
11310
  practitionerId: string;
10466
11311
  clinicId: string;
11312
+ family: ProcedureFamily;
10467
11313
  currency: Currency;
10468
11314
  categoryName: string;
10469
11315
  subcategoryName: string;
@@ -10478,9 +11324,9 @@ declare const practitionerSchema: z.ZodObject<{
10478
11324
  id: string;
10479
11325
  name: string;
10480
11326
  duration: number;
10481
- family: ProcedureFamily;
10482
11327
  practitionerId: string;
10483
11328
  clinicId: string;
11329
+ family: ProcedureFamily;
10484
11330
  currency: Currency;
10485
11331
  categoryName: string;
10486
11332
  subcategoryName: string;
@@ -10550,7 +11396,7 @@ declare const practitionerSchema: z.ZodObject<{
10550
11396
  licenseNumber: string;
10551
11397
  issuingAuthority: string;
10552
11398
  issueDate: Date | Timestamp;
10553
- verificationStatus: "pending" | "verified" | "rejected";
11399
+ verificationStatus: "pending" | "rejected" | "verified";
10554
11400
  expiryDate?: Date | Timestamp | undefined;
10555
11401
  };
10556
11402
  clinics: string[];
@@ -10617,9 +11463,9 @@ declare const practitionerSchema: z.ZodObject<{
10617
11463
  id: string;
10618
11464
  name: string;
10619
11465
  duration: number;
10620
- family: ProcedureFamily;
10621
11466
  practitionerId: string;
10622
11467
  clinicId: string;
11468
+ family: ProcedureFamily;
10623
11469
  currency: Currency;
10624
11470
  categoryName: string;
10625
11471
  subcategoryName: string;
@@ -10666,7 +11512,7 @@ declare const practitionerSchema: z.ZodObject<{
10666
11512
  licenseNumber: string;
10667
11513
  issuingAuthority: string;
10668
11514
  issueDate: Date | Timestamp;
10669
- verificationStatus: "pending" | "verified" | "rejected";
11515
+ verificationStatus: "pending" | "rejected" | "verified";
10670
11516
  expiryDate?: Date | Timestamp | undefined;
10671
11517
  };
10672
11518
  clinics: string[];
@@ -10733,9 +11579,9 @@ declare const practitionerSchema: z.ZodObject<{
10733
11579
  id: string;
10734
11580
  name: string;
10735
11581
  duration: number;
10736
- family: ProcedureFamily;
10737
11582
  practitionerId: string;
10738
11583
  clinicId: string;
11584
+ family: ProcedureFamily;
10739
11585
  currency: Currency;
10740
11586
  categoryName: string;
10741
11587
  subcategoryName: string;
@@ -10811,7 +11657,7 @@ declare const createPractitionerSchema: z.ZodObject<{
10811
11657
  licenseNumber: string;
10812
11658
  issuingAuthority: string;
10813
11659
  issueDate: Date | Timestamp;
10814
- verificationStatus: "pending" | "verified" | "rejected";
11660
+ verificationStatus: "pending" | "rejected" | "verified";
10815
11661
  expiryDate?: Date | Timestamp | undefined;
10816
11662
  }, {
10817
11663
  level: CertificationLevel;
@@ -10819,7 +11665,7 @@ declare const createPractitionerSchema: z.ZodObject<{
10819
11665
  licenseNumber: string;
10820
11666
  issuingAuthority: string;
10821
11667
  issueDate: Date | Timestamp;
10822
- verificationStatus: "pending" | "verified" | "rejected";
11668
+ verificationStatus: "pending" | "rejected" | "verified";
10823
11669
  expiryDate?: Date | Timestamp | undefined;
10824
11670
  }>;
10825
11671
  clinics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -11137,9 +11983,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11137
11983
  id: string;
11138
11984
  name: string;
11139
11985
  duration: number;
11140
- family: ProcedureFamily;
11141
11986
  practitionerId: string;
11142
11987
  clinicId: string;
11988
+ family: ProcedureFamily;
11143
11989
  currency: Currency;
11144
11990
  categoryName: string;
11145
11991
  subcategoryName: string;
@@ -11154,9 +12000,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11154
12000
  id: string;
11155
12001
  name: string;
11156
12002
  duration: number;
11157
- family: ProcedureFamily;
11158
12003
  practitionerId: string;
11159
12004
  clinicId: string;
12005
+ family: ProcedureFamily;
11160
12006
  currency: Currency;
11161
12007
  categoryName: string;
11162
12008
  subcategoryName: string;
@@ -11192,7 +12038,7 @@ declare const createPractitionerSchema: z.ZodObject<{
11192
12038
  licenseNumber: string;
11193
12039
  issuingAuthority: string;
11194
12040
  issueDate: Date | Timestamp;
11195
- verificationStatus: "pending" | "verified" | "rejected";
12041
+ verificationStatus: "pending" | "rejected" | "verified";
11196
12042
  expiryDate?: Date | Timestamp | undefined;
11197
12043
  };
11198
12044
  isVerified: boolean;
@@ -11259,9 +12105,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11259
12105
  id: string;
11260
12106
  name: string;
11261
12107
  duration: number;
11262
- family: ProcedureFamily;
11263
12108
  practitionerId: string;
11264
12109
  clinicId: string;
12110
+ family: ProcedureFamily;
11265
12111
  currency: Currency;
11266
12112
  categoryName: string;
11267
12113
  subcategoryName: string;
@@ -11294,7 +12140,7 @@ declare const createPractitionerSchema: z.ZodObject<{
11294
12140
  licenseNumber: string;
11295
12141
  issuingAuthority: string;
11296
12142
  issueDate: Date | Timestamp;
11297
- verificationStatus: "pending" | "verified" | "rejected";
12143
+ verificationStatus: "pending" | "rejected" | "verified";
11298
12144
  expiryDate?: Date | Timestamp | undefined;
11299
12145
  };
11300
12146
  isVerified: boolean;
@@ -11361,9 +12207,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11361
12207
  id: string;
11362
12208
  name: string;
11363
12209
  duration: number;
11364
- family: ProcedureFamily;
11365
12210
  practitionerId: string;
11366
12211
  clinicId: string;
12212
+ family: ProcedureFamily;
11367
12213
  currency: Currency;
11368
12214
  categoryName: string;
11369
12215
  subcategoryName: string;
@@ -11428,7 +12274,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11428
12274
  licenseNumber: string;
11429
12275
  issuingAuthority: string;
11430
12276
  issueDate: Date | Timestamp;
11431
- verificationStatus: "pending" | "verified" | "rejected";
12277
+ verificationStatus: "pending" | "rejected" | "verified";
11432
12278
  expiryDate?: Date | Timestamp | undefined;
11433
12279
  }, {
11434
12280
  level: CertificationLevel;
@@ -11436,7 +12282,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11436
12282
  licenseNumber: string;
11437
12283
  issuingAuthority: string;
11438
12284
  issueDate: Date | Timestamp;
11439
- verificationStatus: "pending" | "verified" | "rejected";
12285
+ verificationStatus: "pending" | "rejected" | "verified";
11440
12286
  expiryDate?: Date | Timestamp | undefined;
11441
12287
  }>;
11442
12288
  clinics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -11754,9 +12600,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11754
12600
  id: string;
11755
12601
  name: string;
11756
12602
  duration: number;
11757
- family: ProcedureFamily;
11758
12603
  practitionerId: string;
11759
12604
  clinicId: string;
12605
+ family: ProcedureFamily;
11760
12606
  currency: Currency;
11761
12607
  categoryName: string;
11762
12608
  subcategoryName: string;
@@ -11771,9 +12617,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11771
12617
  id: string;
11772
12618
  name: string;
11773
12619
  duration: number;
11774
- family: ProcedureFamily;
11775
12620
  practitionerId: string;
11776
12621
  clinicId: string;
12622
+ family: ProcedureFamily;
11777
12623
  currency: Currency;
11778
12624
  categoryName: string;
11779
12625
  subcategoryName: string;
@@ -11807,7 +12653,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11807
12653
  licenseNumber: string;
11808
12654
  issuingAuthority: string;
11809
12655
  issueDate: Date | Timestamp;
11810
- verificationStatus: "pending" | "verified" | "rejected";
12656
+ verificationStatus: "pending" | "rejected" | "verified";
11811
12657
  expiryDate?: Date | Timestamp | undefined;
11812
12658
  };
11813
12659
  isVerified: boolean;
@@ -11873,9 +12719,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11873
12719
  id: string;
11874
12720
  name: string;
11875
12721
  duration: number;
11876
- family: ProcedureFamily;
11877
12722
  practitionerId: string;
11878
12723
  clinicId: string;
12724
+ family: ProcedureFamily;
11879
12725
  currency: Currency;
11880
12726
  categoryName: string;
11881
12727
  subcategoryName: string;
@@ -11906,7 +12752,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11906
12752
  licenseNumber: string;
11907
12753
  issuingAuthority: string;
11908
12754
  issueDate: Date | Timestamp;
11909
- verificationStatus: "pending" | "verified" | "rejected";
12755
+ verificationStatus: "pending" | "rejected" | "verified";
11910
12756
  expiryDate?: Date | Timestamp | undefined;
11911
12757
  };
11912
12758
  isActive?: boolean | undefined;
@@ -11973,9 +12819,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11973
12819
  id: string;
11974
12820
  name: string;
11975
12821
  duration: number;
11976
- family: ProcedureFamily;
11977
12822
  practitionerId: string;
11978
12823
  clinicId: string;
12824
+ family: ProcedureFamily;
11979
12825
  currency: Currency;
11980
12826
  categoryName: string;
11981
12827
  subcategoryName: string;
@@ -13510,15 +14356,15 @@ declare const clinicSchema: z.ZodObject<{
13510
14356
  }, "strip", z.ZodTypeAny, {
13511
14357
  id: string;
13512
14358
  name: string;
13513
- photo: string;
13514
14359
  rating: number;
14360
+ photo: string;
13515
14361
  services: string[];
13516
14362
  description?: string | null | undefined;
13517
14363
  }, {
13518
14364
  id: string;
13519
14365
  name: string;
13520
- photo: string;
13521
14366
  rating: number;
14367
+ photo: string;
13522
14368
  services: string[];
13523
14369
  description?: string | null | undefined;
13524
14370
  }>, "many">;
@@ -13544,9 +14390,9 @@ declare const clinicSchema: z.ZodObject<{
13544
14390
  id: string;
13545
14391
  name: string;
13546
14392
  duration: number;
13547
- family: ProcedureFamily;
13548
14393
  practitionerId: string;
13549
14394
  clinicId: string;
14395
+ family: ProcedureFamily;
13550
14396
  currency: Currency;
13551
14397
  categoryName: string;
13552
14398
  subcategoryName: string;
@@ -13561,9 +14407,9 @@ declare const clinicSchema: z.ZodObject<{
13561
14407
  id: string;
13562
14408
  name: string;
13563
14409
  duration: number;
13564
- family: ProcedureFamily;
13565
14410
  practitionerId: string;
13566
14411
  clinicId: string;
14412
+ family: ProcedureFamily;
13567
14413
  currency: Currency;
13568
14414
  categoryName: string;
13569
14415
  subcategoryName: string;
@@ -13621,9 +14467,9 @@ declare const clinicSchema: z.ZodObject<{
13621
14467
  id: string;
13622
14468
  name: string;
13623
14469
  duration: number;
13624
- family: ProcedureFamily;
13625
14470
  practitionerId: string;
13626
14471
  clinicId: string;
14472
+ family: ProcedureFamily;
13627
14473
  currency: Currency;
13628
14474
  categoryName: string;
13629
14475
  subcategoryName: string;
@@ -13714,14 +14560,6 @@ declare const clinicSchema: z.ZodObject<{
13714
14560
  coverPhoto: string | null;
13715
14561
  admins: string[];
13716
14562
  featuredPhotos: string[];
13717
- doctorsInfo: {
13718
- id: string;
13719
- name: string;
13720
- photo: string;
13721
- rating: number;
13722
- services: string[];
13723
- description?: string | null | undefined;
13724
- }[];
13725
14563
  reviewInfo: {
13726
14564
  cleanliness: number;
13727
14565
  facilities: number;
@@ -13732,6 +14570,14 @@ declare const clinicSchema: z.ZodObject<{
13732
14570
  averageRating: number;
13733
14571
  recommendationPercentage: number;
13734
14572
  };
14573
+ doctorsInfo: {
14574
+ id: string;
14575
+ name: string;
14576
+ rating: number;
14577
+ photo: string;
14578
+ services: string[];
14579
+ description?: string | null | undefined;
14580
+ }[];
13735
14581
  description?: string | null | undefined;
13736
14582
  logo?: string | undefined;
13737
14583
  photosWithTags?: {
@@ -13750,9 +14596,9 @@ declare const clinicSchema: z.ZodObject<{
13750
14596
  id: string;
13751
14597
  name: string;
13752
14598
  duration: number;
13753
- family: ProcedureFamily;
13754
14599
  practitionerId: string;
13755
14600
  clinicId: string;
14601
+ family: ProcedureFamily;
13756
14602
  currency: Currency;
13757
14603
  categoryName: string;
13758
14604
  subcategoryName: string;
@@ -13843,14 +14689,6 @@ declare const clinicSchema: z.ZodObject<{
13843
14689
  coverPhoto: string | null;
13844
14690
  admins: string[];
13845
14691
  featuredPhotos: string[];
13846
- doctorsInfo: {
13847
- id: string;
13848
- name: string;
13849
- photo: string;
13850
- rating: number;
13851
- services: string[];
13852
- description?: string | null | undefined;
13853
- }[];
13854
14692
  reviewInfo: {
13855
14693
  cleanliness: number;
13856
14694
  facilities: number;
@@ -13861,6 +14699,14 @@ declare const clinicSchema: z.ZodObject<{
13861
14699
  averageRating: number;
13862
14700
  recommendationPercentage: number;
13863
14701
  };
14702
+ doctorsInfo: {
14703
+ id: string;
14704
+ name: string;
14705
+ rating: number;
14706
+ photo: string;
14707
+ services: string[];
14708
+ description?: string | null | undefined;
14709
+ }[];
13864
14710
  description?: string | null | undefined;
13865
14711
  logo?: string | undefined;
13866
14712
  photosWithTags?: {
@@ -16375,7 +17221,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16375
17221
  licenseNumber: string;
16376
17222
  issuingAuthority: string;
16377
17223
  issueDate: Date | Timestamp;
16378
- verificationStatus: "pending" | "verified" | "rejected";
17224
+ verificationStatus: "pending" | "rejected" | "verified";
16379
17225
  expiryDate?: Date | Timestamp | undefined;
16380
17226
  }, {
16381
17227
  level: CertificationLevel;
@@ -16383,7 +17229,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16383
17229
  licenseNumber: string;
16384
17230
  issuingAuthority: string;
16385
17231
  issueDate: Date | Timestamp;
16386
- verificationStatus: "pending" | "verified" | "rejected";
17232
+ verificationStatus: "pending" | "rejected" | "verified";
16387
17233
  expiryDate?: Date | Timestamp | undefined;
16388
17234
  }>;
16389
17235
  }, "strip", z.ZodTypeAny, {
@@ -16395,7 +17241,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16395
17241
  licenseNumber: string;
16396
17242
  issuingAuthority: string;
16397
17243
  issueDate: Date | Timestamp;
16398
- verificationStatus: "pending" | "verified" | "rejected";
17244
+ verificationStatus: "pending" | "rejected" | "verified";
16399
17245
  expiryDate?: Date | Timestamp | undefined;
16400
17246
  };
16401
17247
  email: string;
@@ -16410,7 +17256,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16410
17256
  licenseNumber: string;
16411
17257
  issuingAuthority: string;
16412
17258
  issueDate: Date | Timestamp;
16413
- verificationStatus: "pending" | "verified" | "rejected";
17259
+ verificationStatus: "pending" | "rejected" | "verified";
16414
17260
  expiryDate?: Date | Timestamp | undefined;
16415
17261
  };
16416
17262
  email: string;
@@ -16522,9 +17368,9 @@ declare const createCalendarEventSchema: z.ZodObject<{
16522
17368
  createdAt?: any;
16523
17369
  updatedAt?: any;
16524
17370
  description?: string | undefined;
16525
- clinicBranchId?: string | null | undefined;
16526
17371
  procedureId?: string | null | undefined;
16527
17372
  appointmentId?: string | null | undefined;
17373
+ clinicBranchId?: string | null | undefined;
16528
17374
  eventLocation?: {
16529
17375
  latitude: number;
16530
17376
  longitude: number;
@@ -16545,7 +17391,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16545
17391
  licenseNumber: string;
16546
17392
  issuingAuthority: string;
16547
17393
  issueDate: Date | Timestamp;
16548
- verificationStatus: "pending" | "verified" | "rejected";
17394
+ verificationStatus: "pending" | "rejected" | "verified";
16549
17395
  expiryDate?: Date | Timestamp | undefined;
16550
17396
  };
16551
17397
  email: string;
@@ -16579,9 +17425,9 @@ declare const createCalendarEventSchema: z.ZodObject<{
16579
17425
  createdAt?: any;
16580
17426
  updatedAt?: any;
16581
17427
  description?: string | undefined;
16582
- clinicBranchId?: string | null | undefined;
16583
17428
  procedureId?: string | null | undefined;
16584
17429
  appointmentId?: string | null | undefined;
17430
+ clinicBranchId?: string | null | undefined;
16585
17431
  eventLocation?: {
16586
17432
  latitude: number;
16587
17433
  longitude: number;
@@ -16602,7 +17448,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16602
17448
  licenseNumber: string;
16603
17449
  issuingAuthority: string;
16604
17450
  issueDate: Date | Timestamp;
16605
- verificationStatus: "pending" | "verified" | "rejected";
17451
+ verificationStatus: "pending" | "rejected" | "verified";
16606
17452
  expiryDate?: Date | Timestamp | undefined;
16607
17453
  };
16608
17454
  email: string;
@@ -16733,7 +17579,7 @@ declare const calendarEventSchema: z.ZodObject<{
16733
17579
  licenseNumber: string;
16734
17580
  issuingAuthority: string;
16735
17581
  issueDate: Date | Timestamp;
16736
- verificationStatus: "pending" | "verified" | "rejected";
17582
+ verificationStatus: "pending" | "rejected" | "verified";
16737
17583
  expiryDate?: Date | Timestamp | undefined;
16738
17584
  }, {
16739
17585
  level: CertificationLevel;
@@ -16741,7 +17587,7 @@ declare const calendarEventSchema: z.ZodObject<{
16741
17587
  licenseNumber: string;
16742
17588
  issuingAuthority: string;
16743
17589
  issueDate: Date | Timestamp;
16744
- verificationStatus: "pending" | "verified" | "rejected";
17590
+ verificationStatus: "pending" | "rejected" | "verified";
16745
17591
  expiryDate?: Date | Timestamp | undefined;
16746
17592
  }>;
16747
17593
  }, "strip", z.ZodTypeAny, {
@@ -16753,7 +17599,7 @@ declare const calendarEventSchema: z.ZodObject<{
16753
17599
  licenseNumber: string;
16754
17600
  issuingAuthority: string;
16755
17601
  issueDate: Date | Timestamp;
16756
- verificationStatus: "pending" | "verified" | "rejected";
17602
+ verificationStatus: "pending" | "rejected" | "verified";
16757
17603
  expiryDate?: Date | Timestamp | undefined;
16758
17604
  };
16759
17605
  email: string;
@@ -16768,7 +17614,7 @@ declare const calendarEventSchema: z.ZodObject<{
16768
17614
  licenseNumber: string;
16769
17615
  issuingAuthority: string;
16770
17616
  issueDate: Date | Timestamp;
16771
- verificationStatus: "pending" | "verified" | "rejected";
17617
+ verificationStatus: "pending" | "rejected" | "verified";
16772
17618
  expiryDate?: Date | Timestamp | undefined;
16773
17619
  };
16774
17620
  email: string;
@@ -16918,9 +17764,9 @@ declare const calendarEventSchema: z.ZodObject<{
16918
17764
  syncStatus: CalendarSyncStatus;
16919
17765
  eventType: CalendarEventType;
16920
17766
  description?: string | undefined;
16921
- clinicBranchId?: string | null | undefined;
16922
17767
  procedureId?: string | null | undefined;
16923
17768
  appointmentId?: string | null | undefined;
17769
+ clinicBranchId?: string | null | undefined;
16924
17770
  eventLocation?: {
16925
17771
  latitude: number;
16926
17772
  longitude: number;
@@ -16941,7 +17787,7 @@ declare const calendarEventSchema: z.ZodObject<{
16941
17787
  licenseNumber: string;
16942
17788
  issuingAuthority: string;
16943
17789
  issueDate: Date | Timestamp;
16944
- verificationStatus: "pending" | "verified" | "rejected";
17790
+ verificationStatus: "pending" | "rejected" | "verified";
16945
17791
  expiryDate?: Date | Timestamp | undefined;
16946
17792
  };
16947
17793
  email: string;
@@ -16989,9 +17835,9 @@ declare const calendarEventSchema: z.ZodObject<{
16989
17835
  syncStatus: CalendarSyncStatus;
16990
17836
  eventType: CalendarEventType;
16991
17837
  description?: string | undefined;
16992
- clinicBranchId?: string | null | undefined;
16993
17838
  procedureId?: string | null | undefined;
16994
17839
  appointmentId?: string | null | undefined;
17840
+ clinicBranchId?: string | null | undefined;
16995
17841
  eventLocation?: {
16996
17842
  latitude: number;
16997
17843
  longitude: number;
@@ -17012,7 +17858,7 @@ declare const calendarEventSchema: z.ZodObject<{
17012
17858
  licenseNumber: string;
17013
17859
  issuingAuthority: string;
17014
17860
  issueDate: Date | Timestamp;
17015
- verificationStatus: "pending" | "verified" | "rejected";
17861
+ verificationStatus: "pending" | "rejected" | "verified";
17016
17862
  expiryDate?: Date | Timestamp | undefined;
17017
17863
  };
17018
17864
  email: string;
@@ -17072,7 +17918,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17072
17918
  licenseNumber: string;
17073
17919
  issuingAuthority: string;
17074
17920
  issueDate: Date | Timestamp;
17075
- verificationStatus: "pending" | "verified" | "rejected";
17921
+ verificationStatus: "pending" | "rejected" | "verified";
17076
17922
  expiryDate?: Date | Timestamp | undefined;
17077
17923
  }, {
17078
17924
  level: CertificationLevel;
@@ -17080,7 +17926,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17080
17926
  licenseNumber: string;
17081
17927
  issuingAuthority: string;
17082
17928
  issueDate: Date | Timestamp;
17083
- verificationStatus: "pending" | "verified" | "rejected";
17929
+ verificationStatus: "pending" | "rejected" | "verified";
17084
17930
  expiryDate?: Date | Timestamp | undefined;
17085
17931
  }>;
17086
17932
  }, "strip", z.ZodTypeAny, {
@@ -17092,7 +17938,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17092
17938
  licenseNumber: string;
17093
17939
  issuingAuthority: string;
17094
17940
  issueDate: Date | Timestamp;
17095
- verificationStatus: "pending" | "verified" | "rejected";
17941
+ verificationStatus: "pending" | "rejected" | "verified";
17096
17942
  expiryDate?: Date | Timestamp | undefined;
17097
17943
  };
17098
17944
  email: string;
@@ -17107,7 +17953,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17107
17953
  licenseNumber: string;
17108
17954
  issuingAuthority: string;
17109
17955
  issueDate: Date | Timestamp;
17110
- verificationStatus: "pending" | "verified" | "rejected";
17956
+ verificationStatus: "pending" | "rejected" | "verified";
17111
17957
  expiryDate?: Date | Timestamp | undefined;
17112
17958
  };
17113
17959
  email: string;
@@ -17206,8 +18052,8 @@ declare const clinicReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17206
18052
  isVerified: boolean;
17207
18053
  patientId: string;
17208
18054
  clinicId: string;
17209
- fullReviewId: string;
17210
18055
  comment: string;
18056
+ fullReviewId: string;
17211
18057
  isPublished: boolean;
17212
18058
  cleanliness: number;
17213
18059
  facilities: number;
@@ -17223,8 +18069,8 @@ declare const clinicReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17223
18069
  isVerified: boolean;
17224
18070
  patientId: string;
17225
18071
  clinicId: string;
17226
- fullReviewId: string;
17227
18072
  comment: string;
18073
+ fullReviewId: string;
17228
18074
  isPublished: boolean;
17229
18075
  cleanliness: number;
17230
18076
  facilities: number;
@@ -17303,8 +18149,8 @@ declare const practitionerReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17303
18149
  isVerified: boolean;
17304
18150
  patientId: string;
17305
18151
  practitionerId: string;
17306
- fullReviewId: string;
17307
18152
  comment: string;
18153
+ fullReviewId: string;
17308
18154
  isPublished: boolean;
17309
18155
  overallRating: number;
17310
18156
  wouldRecommend: boolean;
@@ -17320,8 +18166,8 @@ declare const practitionerReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17320
18166
  isVerified: boolean;
17321
18167
  patientId: string;
17322
18168
  practitionerId: string;
17323
- fullReviewId: string;
17324
18169
  comment: string;
18170
+ fullReviewId: string;
17325
18171
  isPublished: boolean;
17326
18172
  overallRating: number;
17327
18173
  wouldRecommend: boolean;
@@ -17400,8 +18246,8 @@ declare const procedureReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17400
18246
  isVerified: boolean;
17401
18247
  patientId: string;
17402
18248
  procedureId: string;
17403
- fullReviewId: string;
17404
18249
  comment: string;
18250
+ fullReviewId: string;
17405
18251
  isPublished: boolean;
17406
18252
  overallRating: number;
17407
18253
  wouldRecommend: boolean;
@@ -17417,8 +18263,8 @@ declare const procedureReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17417
18263
  isVerified: boolean;
17418
18264
  patientId: string;
17419
18265
  procedureId: string;
17420
- fullReviewId: string;
17421
18266
  comment: string;
18267
+ fullReviewId: string;
17422
18268
  isPublished: boolean;
17423
18269
  overallRating: number;
17424
18270
  wouldRecommend: boolean;
@@ -17596,8 +18442,8 @@ declare const reviewSchema: z.ZodObject<{
17596
18442
  isVerified: boolean;
17597
18443
  patientId: string;
17598
18444
  clinicId: string;
17599
- fullReviewId: string;
17600
18445
  comment: string;
18446
+ fullReviewId: string;
17601
18447
  isPublished: boolean;
17602
18448
  cleanliness: number;
17603
18449
  facilities: number;
@@ -17613,8 +18459,8 @@ declare const reviewSchema: z.ZodObject<{
17613
18459
  isVerified: boolean;
17614
18460
  patientId: string;
17615
18461
  clinicId: string;
17616
- fullReviewId: string;
17617
18462
  comment: string;
18463
+ fullReviewId: string;
17618
18464
  isPublished: boolean;
17619
18465
  cleanliness: number;
17620
18466
  facilities: number;
@@ -17649,8 +18495,8 @@ declare const reviewSchema: z.ZodObject<{
17649
18495
  isVerified: boolean;
17650
18496
  patientId: string;
17651
18497
  practitionerId: string;
17652
- fullReviewId: string;
17653
18498
  comment: string;
18499
+ fullReviewId: string;
17654
18500
  isPublished: boolean;
17655
18501
  overallRating: number;
17656
18502
  wouldRecommend: boolean;
@@ -17666,8 +18512,8 @@ declare const reviewSchema: z.ZodObject<{
17666
18512
  isVerified: boolean;
17667
18513
  patientId: string;
17668
18514
  practitionerId: string;
17669
- fullReviewId: string;
17670
18515
  comment: string;
18516
+ fullReviewId: string;
17671
18517
  isPublished: boolean;
17672
18518
  overallRating: number;
17673
18519
  wouldRecommend: boolean;
@@ -17702,8 +18548,8 @@ declare const reviewSchema: z.ZodObject<{
17702
18548
  isVerified: boolean;
17703
18549
  patientId: string;
17704
18550
  procedureId: string;
17705
- fullReviewId: string;
17706
18551
  comment: string;
18552
+ fullReviewId: string;
17707
18553
  isPublished: boolean;
17708
18554
  overallRating: number;
17709
18555
  wouldRecommend: boolean;
@@ -17719,8 +18565,8 @@ declare const reviewSchema: z.ZodObject<{
17719
18565
  isVerified: boolean;
17720
18566
  patientId: string;
17721
18567
  procedureId: string;
17722
- fullReviewId: string;
17723
18568
  comment: string;
18569
+ fullReviewId: string;
17724
18570
  isPublished: boolean;
17725
18571
  overallRating: number;
17726
18572
  wouldRecommend: boolean;
@@ -17737,8 +18583,8 @@ declare const reviewSchema: z.ZodObject<{
17737
18583
  createdAt: Date;
17738
18584
  updatedAt: Date;
17739
18585
  patientId: string;
17740
- overallRating: number;
17741
18586
  appointmentId: string;
18587
+ overallRating: number;
17742
18588
  overallComment: string;
17743
18589
  clinicReview?: {
17744
18590
  id: string;
@@ -17747,8 +18593,8 @@ declare const reviewSchema: z.ZodObject<{
17747
18593
  isVerified: boolean;
17748
18594
  patientId: string;
17749
18595
  clinicId: string;
17750
- fullReviewId: string;
17751
18596
  comment: string;
18597
+ fullReviewId: string;
17752
18598
  isPublished: boolean;
17753
18599
  cleanliness: number;
17754
18600
  facilities: number;
@@ -17765,8 +18611,8 @@ declare const reviewSchema: z.ZodObject<{
17765
18611
  isVerified: boolean;
17766
18612
  patientId: string;
17767
18613
  practitionerId: string;
17768
- fullReviewId: string;
17769
18614
  comment: string;
18615
+ fullReviewId: string;
17770
18616
  isPublished: boolean;
17771
18617
  overallRating: number;
17772
18618
  wouldRecommend: boolean;
@@ -17783,8 +18629,8 @@ declare const reviewSchema: z.ZodObject<{
17783
18629
  isVerified: boolean;
17784
18630
  patientId: string;
17785
18631
  procedureId: string;
17786
- fullReviewId: string;
17787
18632
  comment: string;
18633
+ fullReviewId: string;
17788
18634
  isPublished: boolean;
17789
18635
  overallRating: number;
17790
18636
  wouldRecommend: boolean;
@@ -17799,8 +18645,8 @@ declare const reviewSchema: z.ZodObject<{
17799
18645
  createdAt: Date;
17800
18646
  updatedAt: Date;
17801
18647
  patientId: string;
17802
- overallRating: number;
17803
18648
  appointmentId: string;
18649
+ overallRating: number;
17804
18650
  overallComment: string;
17805
18651
  clinicReview?: {
17806
18652
  id: string;
@@ -17809,8 +18655,8 @@ declare const reviewSchema: z.ZodObject<{
17809
18655
  isVerified: boolean;
17810
18656
  patientId: string;
17811
18657
  clinicId: string;
17812
- fullReviewId: string;
17813
18658
  comment: string;
18659
+ fullReviewId: string;
17814
18660
  isPublished: boolean;
17815
18661
  cleanliness: number;
17816
18662
  facilities: number;
@@ -17827,8 +18673,8 @@ declare const reviewSchema: z.ZodObject<{
17827
18673
  isVerified: boolean;
17828
18674
  patientId: string;
17829
18675
  practitionerId: string;
17830
- fullReviewId: string;
17831
18676
  comment: string;
18677
+ fullReviewId: string;
17832
18678
  isPublished: boolean;
17833
18679
  overallRating: number;
17834
18680
  wouldRecommend: boolean;
@@ -17845,8 +18691,8 @@ declare const reviewSchema: z.ZodObject<{
17845
18691
  isVerified: boolean;
17846
18692
  patientId: string;
17847
18693
  procedureId: string;
17848
- fullReviewId: string;
17849
18694
  comment: string;
18695
+ fullReviewId: string;
17850
18696
  isPublished: boolean;
17851
18697
  overallRating: number;
17852
18698
  wouldRecommend: boolean;
@@ -18147,4 +18993,4 @@ declare const createReviewSchema: z.ZodEffects<z.ZodObject<{
18147
18993
  } | undefined;
18148
18994
  }>;
18149
18995
 
18150
- export { APPOINTMENTS_COLLECTION, AUTH_ERRORS, type AddAllergyData, type AddBlockingConditionData, type AddContraindicationData, type AddMedicationData, type AddressData, type AdminInfo, type AdminToken, AdminTokenStatus, type Allergy, type AllergySubtype, AllergyType, type AllergyTypeWithSubtype, type Appointment, type AppointmentNotification, type AppointmentReminderNotification, AppointmentService, AppointmentStatus, AuthError, AuthService, type BaseNotification, BlockingCondition, type Brand, BrandService, CALENDAR_COLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_GROUPS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarSyncStatus, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicBranchSetupData, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicService, ClinicTag, type ClinicTags, type ContactPerson, Contraindication, CosmeticAllergySubtype, type CreateAdminTokenData, type CreateAppointmentData, type CreateAppointmentParams, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePractitionerData, type CreatePractitionerTokenData, type CreateProcedureData, type CreateSyncedCalendarData, type CreateUserData, Currency, DOCUMENTATION_TEMPLATES_COLLECTION, type DateRange, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, DynamicVariable, type EmergencyContact, EnvironmentalAllergySubtype, FILLED_DOCUMENTS_COLLECTION, type FilledDocument, FilledDocumentService, FilledDocumentStatus, FirebaseErrorCode, type FirebaseUser, FoodAllergySubtype, type GamificationInfo, Gender, HeadingLevel, Language, ListType, type LocationData, MedicationAllergySubtype, type Notification, NotificationService, NotificationStatus, NotificationType, PATIENTS_COLLECTION, PATIENT_APPOINTMENTS_COLLECTION, PATIENT_LOCATION_INFO_COLLECTION, PATIENT_MEDICAL_HISTORY_COLLECTION, PATIENT_MEDICAL_INFO_COLLECTION, PATIENT_SENSITIVE_INFO_COLLECTION, PRACTITIONERS_COLLECTION, PROCEDURES_COLLECTION, type PatientClinic, type PatientDoctor, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileInfo, type PatientSensitiveInfo, PatientService, PaymentStatus, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerBasicInfo, type PractitionerCertification, type PractitionerClinicProcedures, type PractitionerClinicWorkingHours, type PractitionerProfileInfo, type PractitionerReview, type PractitionerReviewInfo, PractitionerService, PractitionerStatus, type PractitionerToken, PractitionerTokenStatus, type PractitionerWorkingHours, type PreRequirementNotification, PricingMeasure, type Procedure, type ProcedureCategorization, ProcedureFamily, type ProcedureInfo, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type Product, ProductService, REGISTER_TOKENS_COLLECTION, REVIEWS_COLLECTION, type RequesterInfo, type Requirement, RequirementType, type Review, ReviewService, SYNCED_CALENDARS_COLLECTION, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type Subcategory, SubcategoryService, SubscriptionModel, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, type Technology, TechnologyService, type TimeSlot, TimeUnit, TreatmentBenefit, USER_ERRORS, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdateProcedureData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type ValidationSchema, type VitalStats, type WorkingHours, addAllergySchema, addBlockingConditionSchema, addContraindicationSchema, addMedicationSchema, addressDataSchema, adminInfoSchema, adminTokenSchema, allergySchema, allergySubtypeSchema, appointmentNotificationSchema, appointmentReminderNotificationSchema, baseNotificationSchema, blockingConditionSchema, calendarEventSchema, calendarEventTimeSchema, clinicAdminOptionsSchema, clinicAdminSchema, clinicAdminSignupSchema, clinicBranchSetupSchema, clinicContactInfoSchema, clinicGroupSchema, clinicGroupSetupSchema, clinicLocationSchema, clinicReviewInfoSchema, clinicReviewSchema, clinicSchema, clinicTagsSchema, contactPersonSchema, contraindicationSchema, createAdminTokenSchema, createAppointmentSchema, createCalendarEventSchema, createClinicAdminSchema, createClinicGroupSchema, createClinicReviewSchema, createClinicSchema, createDefaultClinicGroupSchema, createDocumentTemplateSchema, createDraftPractitionerSchema, createPatientLocationInfoSchema, createPatientMedicalInfoSchema, createPatientProfileSchema, createPatientSensitiveInfoSchema, createPractitionerReviewSchema, createPractitionerSchema, createPractitionerTokenSchema, createProcedureReviewSchema, createReviewSchema, createUserOptionsSchema, documentElementSchema, documentElementWithoutIdSchema, documentTemplateSchema, emailSchema, emergencyContactSchema, gamificationSchema, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseInstance, initializeFirebase, locationDataSchema, medicationSchema, notificationSchema, passwordSchema, patientClinicSchema, patientDoctorSchema, patientLocationInfoSchema, patientMedicalInfoSchema, patientProfileInfoSchema, patientProfileSchema, patientSensitiveInfoSchema, postRequirementNotificationSchema, practitionerBasicInfoSchema, practitionerCertificationSchema, practitionerClinicWorkingHoursSchema, practitionerProfileInfoSchema, practitionerReviewInfoSchema, practitionerReviewSchema, practitionerSchema, practitionerSignupSchema, practitionerTokenSchema, practitionerWorkingHoursSchema, preRequirementNotificationSchema, procedureCategorizationSchema, procedureInfoSchema, procedureReviewInfoSchema, procedureReviewSchema, requesterInfoSchema, reviewSchema, searchAppointmentsSchema, searchPatientsSchema, syncedCalendarEventSchema, timeSlotSchema, timestampSchema, updateAllergySchema, updateAppointmentSchema, updateBlockingConditionSchema, updateCalendarEventSchema, updateClinicAdminSchema, updateClinicGroupSchema, updateClinicSchema, updateContraindicationSchema, updateDocumentTemplateSchema, updateMedicationSchema, updatePatientMedicalInfoSchema, updateVitalStatsSchema, userRoleSchema, userRolesSchema, userSchema, vitalStatsSchema, workingHoursSchema };
18996
+ export { APPOINTMENTS_COLLECTION, AUTH_ERRORS, type AddAllergyData, type AddBlockingConditionData, type AddContraindicationData, type AddMedicationData, type AddressData, type AdminInfo, type AdminToken, AdminTokenStatus, type Allergy, type AllergySubtype, AllergyType, type AllergyTypeWithSubtype, type Appointment, type AppointmentReminderNotification, AppointmentService, AppointmentStatus, AuthError, AuthService, type BaseNotification, BlockingCondition, type Brand, BrandService, CALENDAR_COLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_GROUPS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarSyncStatus, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicBranchSetupData, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicService, ClinicTag, type ClinicTags, type ContactPerson, Contraindication, CosmeticAllergySubtype, type CreateAdminTokenData, type CreateAppointmentData, type CreateAppointmentParams, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePractitionerData, type CreatePractitionerTokenData, type CreateProcedureData, type CreateSyncedCalendarData, type CreateUserData, Currency, DOCUMENTATION_TEMPLATES_COLLECTION, type DateRange, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, DynamicVariable, type EmergencyContact, EnvironmentalAllergySubtype, FILLED_DOCUMENTS_COLLECTION, type FilledDocument, FilledDocumentService, FilledDocumentStatus, FirebaseErrorCode, type FirebaseUser, FoodAllergySubtype, type GamificationInfo, Gender, HeadingLevel, Language, ListType, type LocationData, MedicationAllergySubtype, type Notification, NotificationService, NotificationStatus, NotificationType, PATIENTS_COLLECTION, PATIENT_APPOINTMENTS_COLLECTION, PATIENT_LOCATION_INFO_COLLECTION, PATIENT_MEDICAL_HISTORY_COLLECTION, PATIENT_MEDICAL_INFO_COLLECTION, PATIENT_REQUIREMENTS_SUBCOLLECTION_NAME, PATIENT_SENSITIVE_INFO_COLLECTION, PRACTITIONERS_COLLECTION, PROCEDURES_COLLECTION, type PatientClinic, type PatientDoctor, PatientInstructionStatus, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileInfo, type PatientRequirementInstance, type PatientRequirementInstruction, PatientRequirementOverallStatus, PatientRequirementsService, type PatientSensitiveInfo, PatientService, PaymentStatus, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerBasicInfo, type PractitionerCertification, type PractitionerClinicProcedures, type PractitionerClinicWorkingHours, type PractitionerProfileInfo, type PractitionerReview, type PractitionerReviewInfo, PractitionerService, PractitionerStatus, type PractitionerToken, PractitionerTokenStatus, type PractitionerWorkingHours, type PreRequirementNotification, PricingMeasure, type Procedure, type ProcedureCategorization, ProcedureFamily, type ProcedureInfo, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type Product, ProductService, REGISTER_TOKENS_COLLECTION, REVIEWS_COLLECTION, type RequesterInfo, type Requirement, RequirementType, type Review, ReviewService, SYNCED_CALENDARS_COLLECTION, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type Subcategory, SubcategoryService, SubscriptionModel, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, type Technology, TechnologyService, type TimeSlot, TimeUnit, TreatmentBenefit, USER_ERRORS, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdateProcedureData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type ValidationSchema, type VitalStats, type WorkingHours, addAllergySchema, addBlockingConditionSchema, addContraindicationSchema, addMedicationSchema, addressDataSchema, adminInfoSchema, adminTokenSchema, allergySchema, allergySubtypeSchema, appointmentNotificationSchema, appointmentReminderNotificationSchema, baseNotificationSchema, blockingConditionSchema, calendarEventSchema, calendarEventTimeSchema, clinicAdminOptionsSchema, clinicAdminSchema, clinicAdminSignupSchema, clinicBranchSetupSchema, clinicContactInfoSchema, clinicGroupSchema, clinicGroupSetupSchema, clinicLocationSchema, clinicReviewInfoSchema, clinicReviewSchema, clinicSchema, clinicTagsSchema, contactPersonSchema, contraindicationSchema, createAdminTokenSchema, createAppointmentSchema, createCalendarEventSchema, createClinicAdminSchema, createClinicGroupSchema, createClinicReviewSchema, createClinicSchema, createDefaultClinicGroupSchema, createDocumentTemplateSchema, createDraftPractitionerSchema, createFilledDocumentDataSchema, createPatientLocationInfoSchema, createPatientMedicalInfoSchema, createPatientProfileSchema, createPatientSensitiveInfoSchema, createPractitionerReviewSchema, createPractitionerSchema, createPractitionerTokenSchema, createProcedureReviewSchema, createReviewSchema, createUserOptionsSchema, documentElementSchema, documentElementWithoutIdSchema, documentTemplateSchema, emailSchema, emergencyContactSchema, filledDocumentSchema, filledDocumentStatusSchema, gamificationSchema, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseInstance, initializeFirebase, locationDataSchema, medicationSchema, notificationSchema, passwordSchema, patientClinicSchema, patientDoctorSchema, patientLocationInfoSchema, patientMedicalInfoSchema, patientProfileInfoSchema, patientProfileSchema, patientSensitiveInfoSchema, postRequirementNotificationSchema, practitionerBasicInfoSchema, practitionerCertificationSchema, practitionerClinicWorkingHoursSchema, practitionerProfileInfoSchema, practitionerReviewInfoSchema, practitionerReviewSchema, practitionerSchema, practitionerSignupSchema, practitionerTokenSchema, practitionerWorkingHoursSchema, preRequirementNotificationSchema, procedureCategorizationSchema, procedureInfoSchema, procedureReviewInfoSchema, procedureReviewSchema, requesterInfoSchema, reviewSchema, searchAppointmentsSchema, searchPatientsSchema, syncedCalendarEventSchema, timeSlotSchema, timestampSchema, updateAllergySchema, updateAppointmentSchema, updateBlockingConditionSchema, updateCalendarEventSchema, updateClinicAdminSchema, updateClinicGroupSchema, updateClinicSchema, updateContraindicationSchema, updateDocumentTemplateSchema, updateFilledDocumentDataSchema, updateMedicationSchema, updatePatientMedicalInfoSchema, updateVitalStatsSchema, userRoleSchema, userRolesSchema, userSchema, vitalStatsSchema, workingHoursSchema };