@blackcode_sa/metaestetics-api 1.6.2 → 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 (37) 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 +1417 -554
  10. package/dist/index.d.ts +1417 -554
  11. package/dist/index.js +1393 -687
  12. package/dist/index.mjs +1423 -711
  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/patient.service.ts +31 -1
  25. package/src/services/patient/patientRequirements.service.ts +285 -0
  26. package/src/services/patient/utils/practitioner.utils.ts +79 -1
  27. package/src/types/appointment/index.ts +134 -10
  28. package/src/types/documentation-templates/index.ts +34 -2
  29. package/src/types/notifications/README.md +77 -0
  30. package/src/types/notifications/index.ts +154 -27
  31. package/src/types/patient/index.ts +6 -0
  32. package/src/types/patient/patient-requirements.ts +81 -0
  33. package/src/validations/appointment.schema.ts +300 -62
  34. package/src/validations/documentation-templates/template.schema.ts +55 -0
  35. package/src/validations/documentation-templates.schema.ts +9 -14
  36. package/src/validations/notification.schema.ts +3 -3
  37. package/src/validations/patient/patient-requirements.schema.ts +75 -0
package/dist/index.d.mts 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
  /**
@@ -1907,6 +1929,10 @@ interface PatientProfileComplete {
1907
1929
  patientMedicalInfo?: PatientMedicalInfo;
1908
1930
  patientLocationInfo?: PatientLocationInfo;
1909
1931
  }
1932
+ interface PatientProfileForDoctor {
1933
+ patientProfile?: PatientProfile;
1934
+ patientSensitiveInfo?: PatientSensitiveInfo;
1935
+ }
1910
1936
 
1911
1937
  /**
1912
1938
  * Interface for clinic profile information
@@ -1943,355 +1969,53 @@ interface PatientProfileInfo {
1943
1969
  }
1944
1970
 
1945
1971
  /**
1946
- * Enum defining the possible statuses of an appointment.
1947
- */
1948
- declare enum AppointmentStatus {
1949
- SCHEDULED = "scheduled",// Initial state after booking, before confirmation (if applicable)
1950
- CONFIRMED = "confirmed",// Confirmed by clinic/practitioner
1951
- CHECKED_IN = "checked_in",// Patient has arrived
1952
- IN_PROGRESS = "in_progress",// Procedure has started
1953
- COMPLETED = "completed",// Procedure finished successfully
1954
- CANCELED_PATIENT = "canceled_patient",// Canceled by the patient
1955
- CANCELED_CLINIC = "canceled_clinic",// Canceled by the clinic/practitioner
1956
- NO_SHOW = "no_show",// Patient did not attend
1957
- RESCHEDULED = "rescheduled"
1958
- }
1959
- /**
1960
- * Enum defining the payment status of an appointment.
1961
- */
1962
- declare enum PaymentStatus {
1963
- UNPAID = "unpaid",
1964
- PAID = "paid",
1965
- PARTIALLY_PAID = "partially_paid",
1966
- REFUNDED = "refunded",
1967
- NOT_APPLICABLE = "not_applicable"
1968
- }
1969
- /**
1970
- * Represents a booked appointment, aggregating key information and relevant procedure rules.
1971
- */
1972
- interface Appointment {
1973
- /** Unique identifier for the appointment */
1974
- id: string;
1975
- /** Reference to the associated CalendarEvent */
1976
- calendarEventId: string;
1977
- /** ID of the clinic branch */
1978
- clinicBranchId: string;
1979
- /** Aggregated clinic information (snapshot) */
1980
- clinicInfo: ClinicInfo;
1981
- /** ID of the practitioner */
1982
- practitionerId: string;
1983
- /** Aggregated practitioner information (snapshot) */
1984
- practitionerInfo: PractitionerProfileInfo;
1985
- /** ID of the patient */
1986
- patientId: string;
1987
- /** Aggregated patient information (snapshot) */
1988
- patientInfo: PatientProfileInfo;
1989
- /** ID of the procedure */
1990
- procedureId: string;
1991
- /** Aggregated procedure information including product/brand (snapshot) */
1992
- procedureInfo: ProcedureSummaryInfo;
1993
- /** Status of the appointment */
1994
- status: AppointmentStatus;
1995
- /** Timestamps */
1996
- bookingTime: Timestamp;
1997
- confirmationTime?: Timestamp | null;
1998
- appointmentStartTime: Timestamp;
1999
- appointmentEndTime: Timestamp;
2000
- actualDurationMinutes?: number;
2001
- /** Cancellation Details */
2002
- cancellationReason?: string | null;
2003
- canceledBy?: "patient" | "clinic" | "practitioner" | "system";
2004
- /** Notes */
2005
- internalNotes?: string | null;
2006
- patientNotes?: string | null;
2007
- /** Payment Details */
2008
- cost: number;
2009
- currency: Currency;
2010
- paymentStatus: PaymentStatus;
2011
- paymentTransactionId?: string | null;
2012
- /** Procedure-related conditions and requirements */
2013
- blockingConditions: BlockingCondition[];
2014
- contraindications: Contraindication[];
2015
- preProcedureRequirements: Requirement[];
2016
- postProcedureRequirements: Requirement[];
2017
- /** Tracking information for requirements completion */
2018
- completedPreRequirements?: string[];
2019
- completedPostRequirements?: string[];
2020
- /** Timestamps */
2021
- createdAt: Timestamp;
2022
- updatedAt: Timestamp;
2023
- /** Recurring appointment information */
2024
- isRecurring?: boolean;
2025
- recurringAppointmentId?: string | null;
2026
- }
2027
- /**
2028
- * Data needed to create a new Appointment
2029
- */
2030
- interface CreateAppointmentData {
2031
- calendarEventId: string;
2032
- clinicBranchId: string;
2033
- practitionerId: string;
2034
- patientId: string;
2035
- procedureId: string;
2036
- appointmentStartTime: Timestamp;
2037
- appointmentEndTime: Timestamp;
2038
- cost: number;
2039
- currency: Currency;
2040
- patientNotes?: string | null;
2041
- initialStatus: AppointmentStatus;
2042
- initialPaymentStatus?: PaymentStatus;
2043
- }
2044
- /**
2045
- * Data allowed for updating an Appointment
2046
- */
2047
- interface UpdateAppointmentData {
2048
- status?: AppointmentStatus;
2049
- confirmationTime?: Timestamp | null;
2050
- actualDurationMinutes?: number;
2051
- cancellationReason?: string | null;
2052
- canceledBy?: "patient" | "clinic" | "practitioner" | "system";
2053
- internalNotes?: string | null;
2054
- paymentStatus?: PaymentStatus;
2055
- paymentTransactionId?: string | null;
2056
- completedPreRequirements?: string[];
2057
- completedPostRequirements?: string[];
2058
- }
2059
- /**
2060
- * 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
2061
1983
  */
2062
- interface SearchAppointmentsParams {
2063
- patientId?: string;
2064
- practitionerId?: string;
2065
- clinicBranchId?: string;
2066
- startDate?: Date;
2067
- endDate?: Date;
2068
- status?: AppointmentStatus | AppointmentStatus[];
2069
- limit?: number;
2070
- 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;
2071
1993
  }
2072
- /** Firestore collection name */
2073
- declare const APPOINTMENTS_COLLECTION = "appointments";
2074
1994
 
2075
- /**
2076
- * Schema for validating appointment creation data
2077
- */
2078
- declare const createAppointmentSchema: z.ZodObject<{
2079
- calendarEventId: z.ZodString;
2080
- clinicBranchId: z.ZodString;
2081
- practitionerId: z.ZodString;
2082
- patientId: z.ZodString;
2083
- procedureId: z.ZodString;
2084
- appointmentStartTime: z.ZodEffects<z.ZodAny, any, any>;
2085
- appointmentEndTime: z.ZodEffects<z.ZodAny, any, any>;
2086
- cost: z.ZodNumber;
2087
- currency: z.ZodString;
2088
- patientNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2089
- initialStatus: z.ZodNativeEnum<typeof AppointmentStatus>;
2090
- initialPaymentStatus: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>>;
2091
- }, "strip", z.ZodTypeAny, {
2092
- patientId: string;
2093
- practitionerId: string;
2094
- calendarEventId: string;
2095
- clinicBranchId: string;
2096
- procedureId: string;
2097
- cost: number;
2098
- currency: string;
2099
- initialStatus: AppointmentStatus;
2100
- initialPaymentStatus: PaymentStatus;
2101
- appointmentStartTime?: any;
2102
- appointmentEndTime?: any;
2103
- 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>;
2104
1999
  }, {
2105
- patientId: string;
2106
- practitionerId: string;
2107
- calendarEventId: string;
2108
- clinicBranchId: string;
2109
- procedureId: string;
2110
- cost: number;
2111
- currency: string;
2112
- initialStatus: AppointmentStatus;
2113
- appointmentStartTime?: any;
2114
- appointmentEndTime?: any;
2115
- patientNotes?: string | null | undefined;
2116
- initialPaymentStatus?: PaymentStatus | undefined;
2117
- }>;
2118
- /**
2119
- * Schema for validating appointment update data
2120
- */
2121
- declare const updateAppointmentSchema: z.ZodEffects<z.ZodObject<{
2122
- status: z.ZodOptional<z.ZodNativeEnum<typeof AppointmentStatus>>;
2123
- confirmationTime: z.ZodOptional<z.ZodEffects<z.ZodAny, any, any>>;
2124
- actualDurationMinutes: z.ZodOptional<z.ZodNumber>;
2125
- cancellationReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2126
- canceledBy: z.ZodOptional<z.ZodEnum<["patient", "clinic", "practitioner", "system"]>>;
2127
- internalNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2128
- paymentStatus: z.ZodOptional<z.ZodNativeEnum<typeof PaymentStatus>>;
2129
- paymentTransactionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2130
- completedPreRequirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2131
- completedPostRequirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2132
- }, "strip", z.ZodTypeAny, {
2133
- status?: AppointmentStatus | undefined;
2134
- confirmationTime?: any;
2135
- actualDurationMinutes?: number | undefined;
2136
- cancellationReason?: string | null | undefined;
2137
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2138
- internalNotes?: string | null | undefined;
2139
- paymentStatus?: PaymentStatus | undefined;
2140
- paymentTransactionId?: string | null | undefined;
2141
- completedPreRequirements?: string[] | undefined;
2142
- 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;
2143
2009
  }, {
2144
- status?: AppointmentStatus | undefined;
2145
- confirmationTime?: any;
2146
- actualDurationMinutes?: number | undefined;
2147
- cancellationReason?: string | null | undefined;
2148
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2149
- internalNotes?: string | null | undefined;
2150
- paymentStatus?: PaymentStatus | undefined;
2151
- paymentTransactionId?: string | null | undefined;
2152
- completedPreRequirements?: string[] | undefined;
2153
- completedPostRequirements?: string[] | undefined;
2154
- }>, {
2155
- status?: AppointmentStatus | undefined;
2156
- confirmationTime?: any;
2157
- actualDurationMinutes?: number | undefined;
2158
- cancellationReason?: string | null | undefined;
2159
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2160
- internalNotes?: string | null | undefined;
2161
- paymentStatus?: PaymentStatus | undefined;
2162
- paymentTransactionId?: string | null | undefined;
2163
- completedPreRequirements?: string[] | undefined;
2164
- completedPostRequirements?: string[] | undefined;
2165
- }, {
2166
- status?: AppointmentStatus | undefined;
2167
- confirmationTime?: any;
2168
- actualDurationMinutes?: number | undefined;
2169
- cancellationReason?: string | null | undefined;
2170
- canceledBy?: "practitioner" | "patient" | "clinic" | "system" | undefined;
2171
- internalNotes?: string | null | undefined;
2172
- paymentStatus?: PaymentStatus | undefined;
2173
- paymentTransactionId?: string | null | undefined;
2174
- completedPreRequirements?: string[] | undefined;
2175
- completedPostRequirements?: string[] | undefined;
2176
- }>;
2177
- /**
2178
- * Schema for validating appointment search parameters
2179
- */
2180
- declare const searchAppointmentsSchema: z.ZodEffects<z.ZodObject<{
2181
- patientId: z.ZodOptional<z.ZodString>;
2182
- practitionerId: z.ZodOptional<z.ZodString>;
2183
- clinicBranchId: z.ZodOptional<z.ZodString>;
2184
- startDate: z.ZodOptional<z.ZodDate>;
2185
- endDate: z.ZodOptional<z.ZodDate>;
2186
- status: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<typeof AppointmentStatus>, z.ZodArray<z.ZodNativeEnum<typeof AppointmentStatus>, "many">]>>;
2187
- limit: z.ZodOptional<z.ZodNumber>;
2188
- startAfter: z.ZodOptional<z.ZodAny>;
2189
- }, "strip", z.ZodTypeAny, {
2190
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2191
- patientId?: string | undefined;
2192
- startDate?: Date | undefined;
2193
- endDate?: Date | undefined;
2194
- limit?: number | undefined;
2195
- startAfter?: any;
2196
- practitionerId?: string | undefined;
2197
- clinicBranchId?: string | undefined;
2198
- }, {
2199
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2200
- patientId?: string | undefined;
2201
- startDate?: Date | undefined;
2202
- endDate?: Date | undefined;
2203
- limit?: number | undefined;
2204
- startAfter?: any;
2205
- practitionerId?: string | undefined;
2206
- clinicBranchId?: string | undefined;
2207
- }>, {
2208
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2209
- patientId?: string | undefined;
2210
- startDate?: Date | undefined;
2211
- endDate?: Date | undefined;
2212
- limit?: number | undefined;
2213
- startAfter?: any;
2214
- practitionerId?: string | undefined;
2215
- clinicBranchId?: string | undefined;
2216
- }, {
2217
- status?: AppointmentStatus | AppointmentStatus[] | undefined;
2218
- patientId?: string | undefined;
2219
- startDate?: Date | undefined;
2220
- endDate?: Date | undefined;
2221
- limit?: number | undefined;
2222
- startAfter?: any;
2223
- practitionerId?: string | undefined;
2224
- clinicBranchId?: string | undefined;
2225
- }>;
2226
-
2227
- interface FirebaseInstance {
2228
- app: FirebaseApp;
2229
- db: Firestore;
2230
- auth: Auth;
2231
- analytics: Analytics | null;
2232
- }
2233
- declare const initializeFirebase: (config: {
2234
- apiKey: string;
2235
- authDomain: string;
2236
- projectId: string;
2237
- storageBucket: string;
2238
- messagingSenderId: string;
2239
- appId: string;
2240
- measurementId?: string;
2241
- }) => FirebaseInstance;
2242
- declare const getFirebaseInstance: () => Promise<FirebaseInstance>;
2243
- declare const getFirebaseAuth: () => Promise<Auth>;
2244
- declare const getFirebaseDB: () => Promise<Firestore>;
2245
- declare const getFirebaseApp: () => Promise<FirebaseApp>;
2246
-
2247
- /**
2248
- * Brend proizvoda ili opreme
2249
- * Predstavlja proizvođača ili dobavljača proizvoda i opreme koja se koristi u procedurama
2250
- *
2251
- * @property id - Jedinstveni identifikator brenda
2252
- * @property name - Naziv brenda
2253
- * @property manufacturer - Naziv proizvođača
2254
- * @property description - Detaljan opis brenda i njegovih proizvoda
2255
- * @property website - Web stranica brenda
2256
- * @property isActive - Da li je brend aktivan u sistemu
2257
- * @property createdAt - Datum kreiranja
2258
- * @property updatedAt - Datum poslednjeg ažuriranja
2259
- */
2260
- interface Brand {
2261
- id?: string;
2262
- name: string;
2263
- manufacturer: string;
2264
- createdAt: Date;
2265
- updatedAt: Date;
2266
- isActive: boolean;
2267
- website?: string;
2268
- description?: string;
2269
- }
2270
-
2271
- declare const documentElementSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<z.objectUtil.extendShape<{
2272
- id: z.ZodOptional<z.ZodString>;
2273
- type: z.ZodNativeEnum<typeof DocumentElementType>;
2274
- required: z.ZodOptional<z.ZodBoolean>;
2275
- }, {
2276
- type: z.ZodLiteral<DocumentElementType.HEADING>;
2277
- text: z.ZodString;
2278
- level: z.ZodNativeEnum<typeof HeadingLevel>;
2279
- }>, "strip", z.ZodTypeAny, {
2280
- type: DocumentElementType.HEADING;
2281
- text: string;
2282
- level: HeadingLevel;
2283
- id?: string | undefined;
2284
- required?: boolean | undefined;
2285
- }, {
2286
- type: DocumentElementType.HEADING;
2287
- text: string;
2288
- level: HeadingLevel;
2289
- id?: string | undefined;
2290
- required?: boolean | undefined;
2291
- }>, z.ZodObject<z.objectUtil.extendShape<{
2292
- id: z.ZodOptional<z.ZodString>;
2293
- type: z.ZodNativeEnum<typeof DocumentElementType>;
2294
- 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>;
2295
2019
  }, {
2296
2020
  type: z.ZodLiteral<DocumentElementType.PARAGRAPH>;
2297
2021
  text: z.ZodString;
@@ -2504,6 +2228,23 @@ declare const documentElementSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObjec
2504
2228
  id: z.ZodOptional<z.ZodString>;
2505
2229
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2506
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>;
2507
2248
  }, {
2508
2249
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2509
2250
  label: z.ZodString;
@@ -2738,6 +2479,21 @@ declare const documentElementWithoutIdSchema: z.ZodDiscriminatedUnion<"type", [z
2738
2479
  id: z.ZodOptional<z.ZodString>;
2739
2480
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2740
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>;
2741
2497
  }, {
2742
2498
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2743
2499
  label: z.ZodString;
@@ -2973,6 +2729,21 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
2973
2729
  id: z.ZodOptional<z.ZodString>;
2974
2730
  type: z.ZodNativeEnum<typeof DocumentElementType>;
2975
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>;
2976
2747
  }, {
2977
2748
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
2978
2749
  label: z.ZodString;
@@ -2992,6 +2763,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
2992
2763
  maxFileSizeMB?: number | undefined;
2993
2764
  }>]>, "many">;
2994
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>>;
2995
2769
  }, "strip", z.ZodTypeAny, {
2996
2770
  title: string;
2997
2771
  elements: ({
@@ -3053,6 +2827,10 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3053
2827
  type: DocumentElementType.SIGNATURE;
3054
2828
  label: string;
3055
2829
  required?: boolean | undefined;
2830
+ } | {
2831
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2832
+ label: string;
2833
+ required?: boolean | undefined;
3056
2834
  } | {
3057
2835
  type: DocumentElementType.FILE_UPLOAD;
3058
2836
  label: string;
@@ -3060,6 +2838,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3060
2838
  allowedFileTypes?: string[] | undefined;
3061
2839
  maxFileSizeMB?: number | undefined;
3062
2840
  })[];
2841
+ isUserForm: boolean;
2842
+ isRequired: boolean;
2843
+ sortingOrder: number;
3063
2844
  description?: string | undefined;
3064
2845
  tags?: string[] | undefined;
3065
2846
  }, {
@@ -3123,6 +2904,10 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3123
2904
  type: DocumentElementType.SIGNATURE;
3124
2905
  label: string;
3125
2906
  required?: boolean | undefined;
2907
+ } | {
2908
+ type: DocumentElementType.DITIGAL_SIGNATURE;
2909
+ label: string;
2910
+ required?: boolean | undefined;
3126
2911
  } | {
3127
2912
  type: DocumentElementType.FILE_UPLOAD;
3128
2913
  label: string;
@@ -3132,6 +2917,9 @@ declare const createDocumentTemplateSchema: z.ZodObject<{
3132
2917
  })[];
3133
2918
  description?: string | undefined;
3134
2919
  tags?: string[] | undefined;
2920
+ isUserForm?: boolean | undefined;
2921
+ isRequired?: boolean | undefined;
2922
+ sortingOrder?: number | undefined;
3135
2923
  }>;
3136
2924
  declare const updateDocumentTemplateSchema: z.ZodObject<{
3137
2925
  title: z.ZodOptional<z.ZodString>;
@@ -3350,6 +3138,21 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3350
3138
  id: z.ZodOptional<z.ZodString>;
3351
3139
  type: z.ZodNativeEnum<typeof DocumentElementType>;
3352
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>;
3353
3156
  }, {
3354
3157
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
3355
3158
  label: z.ZodString;
@@ -3370,6 +3173,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3370
3173
  }>]>, "many">>;
3371
3174
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3372
3175
  isActive: z.ZodOptional<z.ZodBoolean>;
3176
+ isUserForm: z.ZodOptional<z.ZodBoolean>;
3177
+ isRequired: z.ZodOptional<z.ZodBoolean>;
3178
+ sortingOrder: z.ZodOptional<z.ZodNumber>;
3373
3179
  }, "strip", z.ZodTypeAny, {
3374
3180
  isActive?: boolean | undefined;
3375
3181
  description?: string | undefined;
@@ -3434,6 +3240,10 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3434
3240
  type: DocumentElementType.SIGNATURE;
3435
3241
  label: string;
3436
3242
  required?: boolean | undefined;
3243
+ } | {
3244
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3245
+ label: string;
3246
+ required?: boolean | undefined;
3437
3247
  } | {
3438
3248
  type: DocumentElementType.FILE_UPLOAD;
3439
3249
  label: string;
@@ -3441,6 +3251,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3441
3251
  allowedFileTypes?: string[] | undefined;
3442
3252
  maxFileSizeMB?: number | undefined;
3443
3253
  })[] | undefined;
3254
+ isUserForm?: boolean | undefined;
3255
+ isRequired?: boolean | undefined;
3256
+ sortingOrder?: number | undefined;
3444
3257
  }, {
3445
3258
  isActive?: boolean | undefined;
3446
3259
  description?: string | undefined;
@@ -3505,6 +3318,10 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3505
3318
  type: DocumentElementType.SIGNATURE;
3506
3319
  label: string;
3507
3320
  required?: boolean | undefined;
3321
+ } | {
3322
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3323
+ label: string;
3324
+ required?: boolean | undefined;
3508
3325
  } | {
3509
3326
  type: DocumentElementType.FILE_UPLOAD;
3510
3327
  label: string;
@@ -3512,6 +3329,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
3512
3329
  allowedFileTypes?: string[] | undefined;
3513
3330
  maxFileSizeMB?: number | undefined;
3514
3331
  })[] | undefined;
3332
+ isUserForm?: boolean | undefined;
3333
+ isRequired?: boolean | undefined;
3334
+ sortingOrder?: number | undefined;
3515
3335
  }>;
3516
3336
  declare const documentTemplateSchema: z.ZodObject<{
3517
3337
  id: z.ZodString;
@@ -3756,6 +3576,23 @@ declare const documentTemplateSchema: z.ZodObject<{
3756
3576
  id: z.ZodOptional<z.ZodString>;
3757
3577
  type: z.ZodNativeEnum<typeof DocumentElementType>;
3758
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>;
3759
3596
  }, {
3760
3597
  type: z.ZodLiteral<DocumentElementType.FILE_UPLOAD>;
3761
3598
  label: z.ZodString;
@@ -3779,6 +3616,9 @@ declare const documentTemplateSchema: z.ZodObject<{
3779
3616
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3780
3617
  version: z.ZodNumber;
3781
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>>;
3782
3622
  }, "strip", z.ZodTypeAny, {
3783
3623
  id: string;
3784
3624
  createdAt: number;
@@ -3855,6 +3695,11 @@ declare const documentTemplateSchema: z.ZodObject<{
3855
3695
  label: string;
3856
3696
  id?: string | undefined;
3857
3697
  required?: boolean | undefined;
3698
+ } | {
3699
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3700
+ label: string;
3701
+ id?: string | undefined;
3702
+ required?: boolean | undefined;
3858
3703
  } | {
3859
3704
  type: DocumentElementType.FILE_UPLOAD;
3860
3705
  label: string;
@@ -3863,6 +3708,9 @@ declare const documentTemplateSchema: z.ZodObject<{
3863
3708
  allowedFileTypes?: string[] | undefined;
3864
3709
  maxFileSizeMB?: number | undefined;
3865
3710
  })[];
3711
+ isUserForm: boolean;
3712
+ isRequired: boolean;
3713
+ sortingOrder: number;
3866
3714
  createdBy: string;
3867
3715
  version: number;
3868
3716
  description?: string | undefined;
@@ -3943,6 +3791,11 @@ declare const documentTemplateSchema: z.ZodObject<{
3943
3791
  label: string;
3944
3792
  id?: string | undefined;
3945
3793
  required?: boolean | undefined;
3794
+ } | {
3795
+ type: DocumentElementType.DITIGAL_SIGNATURE;
3796
+ label: string;
3797
+ id?: string | undefined;
3798
+ required?: boolean | undefined;
3946
3799
  } | {
3947
3800
  type: DocumentElementType.FILE_UPLOAD;
3948
3801
  label: string;
@@ -3955,6 +3808,91 @@ declare const documentTemplateSchema: z.ZodObject<{
3955
3808
  version: number;
3956
3809
  description?: string | undefined;
3957
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;
3958
3896
  }>;
3959
3897
 
3960
3898
  declare class BaseService {
@@ -4415,6 +4353,685 @@ declare class ProductService extends BaseService implements IProductService {
4415
4353
  getById(technologyId: string, productId: string): Promise<Product | null>;
4416
4354
  }
4417
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
+
4418
5035
  /**
4419
5036
  * Enum for synced calendar provider
4420
5037
  */
@@ -4783,6 +5400,19 @@ declare class PatientService extends BaseService {
4783
5400
  limit?: number;
4784
5401
  startAfter?: string;
4785
5402
  }): Promise<PatientProfile[]>;
5403
+ /**
5404
+ * Gets all patients associated with a specific practitioner with their sensitive information.
5405
+ *
5406
+ * @param {string} practitionerId - ID of the practitioner whose patients to retrieve
5407
+ * @param {Object} options - Optional parameters for pagination
5408
+ * @param {number} options.limit - Maximum number of profiles to return
5409
+ * @param {string} options.startAfter - The ID of the document to start after (for pagination)
5410
+ * @returns {Promise<PatientProfileForDoctor[]>} A promise resolving to an array of patient profiles with sensitive info
5411
+ */
5412
+ getPatientsByPractitionerWithDetails(practitionerId: string, options?: {
5413
+ limit?: number;
5414
+ startAfter?: string;
5415
+ }): Promise<PatientProfileForDoctor[]>;
4786
5416
  /**
4787
5417
  * Gets all patients associated with a specific clinic.
4788
5418
  *
@@ -5362,10 +5992,19 @@ declare class AuthService extends BaseService {
5362
5992
  * Enumeracija koja definiše sve moguće tipove notifikacija
5363
5993
  */
5364
5994
  declare enum NotificationType {
5365
- PRE_REQUIREMENT = "preRequirement",
5366
- POST_REQUIREMENT = "postRequirement",
5367
- APPOINTMENT_REMINDER = "appointmentReminder",
5368
- 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"
5369
6008
  }
5370
6009
  /**
5371
6010
  * Bazni interfejs za sve notifikacije
@@ -5399,14 +6038,22 @@ interface BaseNotification {
5399
6038
  isRead: boolean;
5400
6039
  /** Uloga korisnika kome je namenjena notifikacija */
5401
6040
  userRole: UserRole;
6041
+ appointmentId?: string;
6042
+ patientRequirementInstanceId?: string;
6043
+ instructionId?: string;
6044
+ formId?: string;
6045
+ originalRequirementId?: string;
6046
+ transactionId?: string;
5402
6047
  }
5403
6048
  /**
5404
6049
  * Status notifikacije
5405
6050
  */
5406
6051
  declare enum NotificationStatus {
5407
6052
  PENDING = "pending",
6053
+ PROCESSING = "processing",
5408
6054
  SENT = "sent",
5409
6055
  FAILED = "failed",
6056
+ DELIVERED = "delivered",
5410
6057
  CANCELLED = "cancelled",
5411
6058
  PARTIAL_SUCCESS = "partialSuccess"
5412
6059
  }
@@ -5414,7 +6061,7 @@ declare enum NotificationStatus {
5414
6061
  * Notifikacija za pre-requirement
5415
6062
  */
5416
6063
  interface PreRequirementNotification extends BaseNotification {
5417
- notificationType: NotificationType.PRE_REQUIREMENT;
6064
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
5418
6065
  /** ID tretmana za koji je vezan pre-requirement */
5419
6066
  treatmentId: string;
5420
6067
  /** Lista pre-requirements koji treba da se ispune */
@@ -5426,7 +6073,7 @@ interface PreRequirementNotification extends BaseNotification {
5426
6073
  * Notifikacija za post-requirement
5427
6074
  */
5428
6075
  interface PostRequirementNotification extends BaseNotification {
5429
- notificationType: NotificationType.POST_REQUIREMENT;
6076
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
5430
6077
  /** ID tretmana za koji je vezan post-requirement */
5431
6078
  treatmentId: string;
5432
6079
  /** Lista post-requirements koji treba da se ispune */
@@ -5435,37 +6082,108 @@ interface PostRequirementNotification extends BaseNotification {
5435
6082
  deadline: Timestamp;
5436
6083
  }
5437
6084
  /**
5438
- * 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."
5439
6097
  */
5440
6098
  interface AppointmentReminderNotification extends BaseNotification {
5441
6099
  notificationType: NotificationType.APPOINTMENT_REMINDER;
5442
- /** ID zakazanog termina */
5443
6100
  appointmentId: string;
5444
- /** Vreme termina */
5445
6101
  appointmentTime: Timestamp;
5446
- /** Tip tretmana */
5447
- treatmentType: string;
5448
- /** Ime doktora */
5449
- doctorName: string;
6102
+ procedureName?: string;
6103
+ practitionerName?: string;
6104
+ clinicName?: string;
5450
6105
  }
5451
6106
  /**
5452
- * 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."
5453
6110
  */
5454
- interface AppointmentNotification extends BaseNotification {
5455
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
5456
- /** 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;
5457
6135
  appointmentId: string;
5458
- /** Novi status termina */
5459
- appointmentStatus: string;
5460
- /** Prethodni status termina */
5461
- previousStatus: string;
5462
- /** Razlog promene (opciono) */
5463
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;
5464
6182
  }
5465
6183
  /**
5466
6184
  * Unija svih tipova notifikacija
5467
6185
  */
5468
- type Notification = PreRequirementNotification | PostRequirementNotification | AppointmentReminderNotification | AppointmentNotification;
6186
+ type Notification = PreRequirementNotification | PostRequirementNotification | RequirementInstructionDueNotification | AppointmentReminderNotification | AppointmentStatusChangeNotification | AppointmentRescheduledProposalNotification | AppointmentCancelledNotification | FormReminderNotification | FormSubmissionConfirmationNotification | ReviewRequestNotification | GeneralMessageNotification | PaymentConfirmationNotification;
5469
6187
 
5470
6188
  declare class NotificationService extends BaseService {
5471
6189
  /**
@@ -5702,39 +6420,72 @@ declare class DocumentationTemplateService extends BaseService {
5702
6420
  }
5703
6421
 
5704
6422
  /**
5705
- * Service for managing filled documents
6423
+ * Service for managing filled documents within appointment subcollections
5706
6424
  */
5707
6425
  declare class FilledDocumentService extends BaseService {
5708
- private readonly collectionRef;
5709
6426
  private readonly templateService;
5710
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>;
5711
6446
  /**
5712
- * Create a new filled document
5713
- * @param templateId - ID of the template to use
5714
- * @param patientId - ID of the patient
5715
- * @param practitionerId - ID of the practitioner
5716
- * @param clinicId - ID of the clinic
5717
- * @returns The created filled document
5718
- */
5719
- createFilledDocument(templateId: string, patientId: string, practitionerId: string, clinicId: string): Promise<FilledDocument>;
5720
- /**
5721
- * Get a filled document by ID
5722
- * @param documentId - ID of the filled document to retrieve
5723
- * @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.
5724
6452
  */
5725
- getFilledDocumentById(documentId: string): Promise<FilledDocument | null>;
6453
+ getFilledDocumentFromAppointmentById(appointmentId: string, formId: string, isUserForm: boolean): Promise<FilledDocument | null>;
5726
6454
  /**
5727
- * Update values in a filled document
5728
- * @param documentId - ID of the filled document to update
5729
- * @param values - Updated values for elements
5730
- * @param status - Optional new status for the document
5731
- * @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.
5732
6462
  */
5733
- updateFilledDocument(documentId: string, values: {
6463
+ updateFilledDocumentInAppointment(appointmentId: string, formId: string, isUserForm: boolean, values?: {
5734
6464
  [elementId: string]: any;
5735
6465
  }, status?: FilledDocumentStatus): Promise<FilledDocument>;
5736
6466
  /**
5737
- * 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)
5738
6489
  * @param patientId - ID of the patient
5739
6490
  * @param pageSize - Number of documents to retrieve
5740
6491
  * @param lastDoc - Last document from previous page for pagination
@@ -5745,7 +6496,7 @@ declare class FilledDocumentService extends BaseService {
5745
6496
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5746
6497
  }>;
5747
6498
  /**
5748
- * Get filled documents for a practitioner
6499
+ * Get filled documents for a practitioner (NEEDS REWORK for subcollections or Collection Group Query)
5749
6500
  * @param practitionerId - ID of the practitioner
5750
6501
  * @param pageSize - Number of documents to retrieve
5751
6502
  * @param lastDoc - Last document from previous page for pagination
@@ -5756,7 +6507,7 @@ declare class FilledDocumentService extends BaseService {
5756
6507
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5757
6508
  }>;
5758
6509
  /**
5759
- * Get filled documents for a clinic
6510
+ * Get filled documents for a clinic (NEEDS REWORK for subcollections or Collection Group Query)
5760
6511
  * @param clinicId - ID of the clinic
5761
6512
  * @param pageSize - Number of documents to retrieve
5762
6513
  * @param lastDoc - Last document from previous page for pagination
@@ -5767,7 +6518,7 @@ declare class FilledDocumentService extends BaseService {
5767
6518
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5768
6519
  }>;
5769
6520
  /**
5770
- * Get filled documents by template
6521
+ * Get filled documents by template (NEEDS REWORK for subcollections or Collection Group Query)
5771
6522
  * @param templateId - ID of the template
5772
6523
  * @param pageSize - Number of documents to retrieve
5773
6524
  * @param lastDoc - Last document from previous page for pagination
@@ -5778,7 +6529,7 @@ declare class FilledDocumentService extends BaseService {
5778
6529
  lastDoc: QueryDocumentSnapshot<FilledDocument> | null;
5779
6530
  }>;
5780
6531
  /**
5781
- * Get filled documents by status
6532
+ * Get filled documents by status (NEEDS REWORK for subcollections or Collection Group Query)
5782
6533
  * @param status - Status to filter by
5783
6534
  * @param pageSize - Number of documents to retrieve
5784
6535
  * @param lastDoc - Last document from previous page for pagination
@@ -6421,6 +7172,7 @@ declare class AppointmentService extends BaseService {
6421
7172
  private patientService;
6422
7173
  private practitionerService;
6423
7174
  private clinicService;
7175
+ private filledDocumentService;
6424
7176
  private functions;
6425
7177
  /**
6426
7178
  * Creates a new AppointmentService instance.
@@ -6433,7 +7185,7 @@ declare class AppointmentService extends BaseService {
6433
7185
  * @param practitionerService Practitioner service instance
6434
7186
  * @param clinicService Clinic service instance
6435
7187
  */
6436
- 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);
6437
7189
  /**
6438
7190
  * Test method using the callable function version of getAvailableBookingSlots
6439
7191
  * For development and testing purposes only - not for production use
@@ -6558,70 +7310,71 @@ declare class AppointmentService extends BaseService {
6558
7310
  *
6559
7311
  * @param appointmentId ID of the appointment
6560
7312
  * @param newStatus New status to set
6561
- * @param cancellationReason Required if canceling the appointment
6562
- * @param canceledBy Required if canceling the appointment
7313
+ * @param details Optional details for the status change
6563
7314
  * @returns The updated appointment
6564
7315
  */
6565
- 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>;
6566
7320
  /**
6567
- * Confirms an appointment.
6568
- *
6569
- * @param appointmentId ID of the appointment to confirm
6570
- * @returns The confirmed appointment
7321
+ * Confirms a PENDING appointment by an Admin/Clinic.
6571
7322
  */
6572
- confirmAppointment(appointmentId: string): Promise<Appointment>;
7323
+ confirmAppointmentAdmin(appointmentId: string): Promise<Appointment>;
6573
7324
  /**
6574
- * Cancels an appointment from the clinic side.
6575
- *
6576
- * @param appointmentId ID of the appointment to cancel
6577
- * @param reason Reason for cancellation
6578
- * @returns The canceled appointment
7325
+ * Cancels an appointment by the User (Patient).
6579
7326
  */
6580
- cancelAppointmentByClinic(appointmentId: string, reason: string): Promise<Appointment>;
7327
+ cancelAppointmentUser(appointmentId: string, reason: string): Promise<Appointment>;
6581
7328
  /**
6582
- * Cancels an appointment from the patient side.
6583
- *
6584
- * @param appointmentId ID of the appointment to cancel
6585
- * @param reason Reason for cancellation
6586
- * @returns The canceled appointment
7329
+ * Cancels an appointment by an Admin/Clinic.
6587
7330
  */
6588
- cancelAppointmentByPatient(appointmentId: string, reason: string): Promise<Appointment>;
7331
+ cancelAppointmentAdmin(appointmentId: string, reason: string): Promise<Appointment>;
6589
7332
  /**
6590
- * Marks an appointment as checked in.
6591
- *
6592
- * @param appointmentId ID of the appointment
6593
- * @returns The updated appointment
7333
+ * Admin proposes to reschedule an appointment.
7334
+ * Sets status to RESCHEDULED_BY_CLINIC and updates times.
6594
7335
  */
6595
- checkInAppointment(appointmentId: string): Promise<Appointment>;
7336
+ rescheduleAppointmentAdmin(appointmentId: string, newStartTime: Timestamp, newEndTime: Timestamp): Promise<Appointment>;
6596
7337
  /**
6597
- * Marks an appointment as in progress.
6598
- *
6599
- * @param appointmentId ID of the appointment
6600
- * @returns The updated appointment
7338
+ * User confirms a reschedule proposed by the clinic.
7339
+ * Status changes from RESCHEDULED_BY_CLINIC to CONFIRMED.
6601
7340
  */
6602
- startAppointment(appointmentId: string): Promise<Appointment>;
7341
+ rescheduleAppointmentConfirmUser(appointmentId: string): Promise<Appointment>;
6603
7342
  /**
6604
- * Marks an appointment as completed.
6605
- *
6606
- * @param appointmentId ID of the appointment
6607
- * @param actualDurationMinutes Actual duration of the appointment in minutes
6608
- * @returns The updated appointment
7343
+ * User rejects a reschedule proposed by the clinic.
7344
+ * Status changes from RESCHEDULED_BY_CLINIC to CANCELED_PATIENT_RESCHEDULED.
6609
7345
  */
6610
- completeAppointment(appointmentId: string, actualDurationMinutes?: number): Promise<Appointment>;
7346
+ rescheduleAppointmentRejectUser(appointmentId: string, reason: string): Promise<Appointment>;
6611
7347
  /**
6612
- * Marks an appointment as no-show.
6613
- *
6614
- * @param appointmentId ID of the appointment
6615
- * @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.
6616
7374
  */
6617
- markNoShow(appointmentId: string): Promise<Appointment>;
7375
+ addReviewToAppointment(appointmentId: string, reviewData: Omit<PatientReviewInfo, "reviewedAt" | "reviewId">): Promise<Appointment>;
6618
7376
  /**
6619
7377
  * Updates the payment status of an appointment.
6620
- *
6621
- * @param appointmentId ID of the appointment
6622
- * @param paymentStatus New payment status
6623
- * @param paymentTransactionId Optional transaction ID for the payment
6624
- * @returns The updated appointment
6625
7378
  */
6626
7379
  updatePaymentStatus(appointmentId: string, paymentStatus: PaymentStatus, paymentTransactionId?: string): Promise<Appointment>;
6627
7380
  /**
@@ -6655,6 +7408,116 @@ declare class AppointmentService extends BaseService {
6655
7408
  getDebugToken(): Promise<string | null>;
6656
7409
  }
6657
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
+
6658
7521
  declare class AuthError extends Error {
6659
7522
  code: string;
6660
7523
  status: number;
@@ -6877,7 +7740,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6877
7740
  isRead: z.ZodBoolean;
6878
7741
  userRole: z.ZodNativeEnum<typeof UserRole>;
6879
7742
  }, {
6880
- notificationType: z.ZodLiteral<NotificationType.PRE_REQUIREMENT>;
7743
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
6881
7744
  treatmentId: z.ZodString;
6882
7745
  requirements: z.ZodArray<z.ZodString, "many">;
6883
7746
  deadline: z.ZodAny;
@@ -6885,7 +7748,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6885
7748
  status: NotificationStatus;
6886
7749
  title: string;
6887
7750
  requirements: string[];
6888
- notificationType: NotificationType.PRE_REQUIREMENT;
7751
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6889
7752
  treatmentId: string;
6890
7753
  userId: string;
6891
7754
  notificationTokens: string[];
@@ -6901,7 +7764,7 @@ declare const preRequirementNotificationSchema: z.ZodObject<z.objectUtil.extendS
6901
7764
  status: NotificationStatus;
6902
7765
  title: string;
6903
7766
  requirements: string[];
6904
- notificationType: NotificationType.PRE_REQUIREMENT;
7767
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6905
7768
  treatmentId: string;
6906
7769
  userId: string;
6907
7770
  notificationTokens: string[];
@@ -6931,7 +7794,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6931
7794
  isRead: z.ZodBoolean;
6932
7795
  userRole: z.ZodNativeEnum<typeof UserRole>;
6933
7796
  }, {
6934
- notificationType: z.ZodLiteral<NotificationType.POST_REQUIREMENT>;
7797
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
6935
7798
  treatmentId: z.ZodString;
6936
7799
  requirements: z.ZodArray<z.ZodString, "many">;
6937
7800
  deadline: z.ZodAny;
@@ -6939,7 +7802,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6939
7802
  status: NotificationStatus;
6940
7803
  title: string;
6941
7804
  requirements: string[];
6942
- notificationType: NotificationType.POST_REQUIREMENT;
7805
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6943
7806
  treatmentId: string;
6944
7807
  userId: string;
6945
7808
  notificationTokens: string[];
@@ -6955,7 +7818,7 @@ declare const postRequirementNotificationSchema: z.ZodObject<z.objectUtil.extend
6955
7818
  status: NotificationStatus;
6956
7819
  title: string;
6957
7820
  requirements: string[];
6958
- notificationType: NotificationType.POST_REQUIREMENT;
7821
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
6959
7822
  treatmentId: string;
6960
7823
  userId: string;
6961
7824
  notificationTokens: string[];
@@ -7042,7 +7905,7 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7042
7905
  isRead: z.ZodBoolean;
7043
7906
  userRole: z.ZodNativeEnum<typeof UserRole>;
7044
7907
  }, {
7045
- notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_NOTIFICATION>;
7908
+ notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_STATUS_CHANGE>;
7046
7909
  appointmentId: z.ZodString;
7047
7910
  appointmentStatus: z.ZodString;
7048
7911
  previousStatus: z.ZodString;
@@ -7051,14 +7914,14 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7051
7914
  status: NotificationStatus;
7052
7915
  title: string;
7053
7916
  appointmentId: string;
7054
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
7917
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7055
7918
  userId: string;
7056
7919
  notificationTokens: string[];
7057
7920
  body: string;
7058
7921
  isRead: boolean;
7059
7922
  userRole: UserRole;
7060
- appointmentStatus: string;
7061
7923
  previousStatus: string;
7924
+ appointmentStatus: string;
7062
7925
  id?: string | undefined;
7063
7926
  createdAt?: any;
7064
7927
  updatedAt?: any;
@@ -7068,14 +7931,14 @@ declare const appointmentNotificationSchema: z.ZodObject<z.objectUtil.extendShap
7068
7931
  status: NotificationStatus;
7069
7932
  title: string;
7070
7933
  appointmentId: string;
7071
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
7934
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7072
7935
  userId: string;
7073
7936
  notificationTokens: string[];
7074
7937
  body: string;
7075
7938
  isRead: boolean;
7076
7939
  userRole: UserRole;
7077
- appointmentStatus: string;
7078
7940
  previousStatus: string;
7941
+ appointmentStatus: string;
7079
7942
  id?: string | undefined;
7080
7943
  createdAt?: any;
7081
7944
  updatedAt?: any;
@@ -7099,7 +7962,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7099
7962
  isRead: z.ZodBoolean;
7100
7963
  userRole: z.ZodNativeEnum<typeof UserRole>;
7101
7964
  }, {
7102
- notificationType: z.ZodLiteral<NotificationType.PRE_REQUIREMENT>;
7965
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
7103
7966
  treatmentId: z.ZodString;
7104
7967
  requirements: z.ZodArray<z.ZodString, "many">;
7105
7968
  deadline: z.ZodAny;
@@ -7107,7 +7970,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7107
7970
  status: NotificationStatus;
7108
7971
  title: string;
7109
7972
  requirements: string[];
7110
- notificationType: NotificationType.PRE_REQUIREMENT;
7973
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7111
7974
  treatmentId: string;
7112
7975
  userId: string;
7113
7976
  notificationTokens: string[];
@@ -7123,7 +7986,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7123
7986
  status: NotificationStatus;
7124
7987
  title: string;
7125
7988
  requirements: string[];
7126
- notificationType: NotificationType.PRE_REQUIREMENT;
7989
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7127
7990
  treatmentId: string;
7128
7991
  userId: string;
7129
7992
  notificationTokens: string[];
@@ -7149,7 +8012,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7149
8012
  isRead: z.ZodBoolean;
7150
8013
  userRole: z.ZodNativeEnum<typeof UserRole>;
7151
8014
  }, {
7152
- notificationType: z.ZodLiteral<NotificationType.POST_REQUIREMENT>;
8015
+ notificationType: z.ZodLiteral<NotificationType.REQUIREMENT_INSTRUCTION_DUE>;
7153
8016
  treatmentId: z.ZodString;
7154
8017
  requirements: z.ZodArray<z.ZodString, "many">;
7155
8018
  deadline: z.ZodAny;
@@ -7157,7 +8020,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7157
8020
  status: NotificationStatus;
7158
8021
  title: string;
7159
8022
  requirements: string[];
7160
- notificationType: NotificationType.POST_REQUIREMENT;
8023
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7161
8024
  treatmentId: string;
7162
8025
  userId: string;
7163
8026
  notificationTokens: string[];
@@ -7173,7 +8036,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7173
8036
  status: NotificationStatus;
7174
8037
  title: string;
7175
8038
  requirements: string[];
7176
- notificationType: NotificationType.POST_REQUIREMENT;
8039
+ notificationType: NotificationType.REQUIREMENT_INSTRUCTION_DUE;
7177
8040
  treatmentId: string;
7178
8041
  userId: string;
7179
8042
  notificationTokens: string[];
@@ -7252,7 +8115,7 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7252
8115
  isRead: z.ZodBoolean;
7253
8116
  userRole: z.ZodNativeEnum<typeof UserRole>;
7254
8117
  }, {
7255
- notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_NOTIFICATION>;
8118
+ notificationType: z.ZodLiteral<NotificationType.APPOINTMENT_STATUS_CHANGE>;
7256
8119
  appointmentId: z.ZodString;
7257
8120
  appointmentStatus: z.ZodString;
7258
8121
  previousStatus: z.ZodString;
@@ -7261,14 +8124,14 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7261
8124
  status: NotificationStatus;
7262
8125
  title: string;
7263
8126
  appointmentId: string;
7264
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
8127
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7265
8128
  userId: string;
7266
8129
  notificationTokens: string[];
7267
8130
  body: string;
7268
8131
  isRead: boolean;
7269
8132
  userRole: UserRole;
7270
- appointmentStatus: string;
7271
8133
  previousStatus: string;
8134
+ appointmentStatus: string;
7272
8135
  id?: string | undefined;
7273
8136
  createdAt?: any;
7274
8137
  updatedAt?: any;
@@ -7278,14 +8141,14 @@ declare const notificationSchema: z.ZodDiscriminatedUnion<"notificationType", [z
7278
8141
  status: NotificationStatus;
7279
8142
  title: string;
7280
8143
  appointmentId: string;
7281
- notificationType: NotificationType.APPOINTMENT_NOTIFICATION;
8144
+ notificationType: NotificationType.APPOINTMENT_STATUS_CHANGE;
7282
8145
  userId: string;
7283
8146
  notificationTokens: string[];
7284
8147
  body: string;
7285
8148
  isRead: boolean;
7286
8149
  userRole: UserRole;
7287
- appointmentStatus: string;
7288
8150
  previousStatus: string;
8151
+ appointmentStatus: string;
7289
8152
  id?: string | undefined;
7290
8153
  createdAt?: any;
7291
8154
  updatedAt?: any;
@@ -9698,7 +10561,7 @@ declare const practitionerCertificationSchema: z.ZodObject<{
9698
10561
  licenseNumber: string;
9699
10562
  issuingAuthority: string;
9700
10563
  issueDate: Date | Timestamp;
9701
- verificationStatus: "pending" | "verified" | "rejected";
10564
+ verificationStatus: "pending" | "rejected" | "verified";
9702
10565
  expiryDate?: Date | Timestamp | undefined;
9703
10566
  }, {
9704
10567
  level: CertificationLevel;
@@ -9706,7 +10569,7 @@ declare const practitionerCertificationSchema: z.ZodObject<{
9706
10569
  licenseNumber: string;
9707
10570
  issuingAuthority: string;
9708
10571
  issueDate: Date | Timestamp;
9709
- verificationStatus: "pending" | "verified" | "rejected";
10572
+ verificationStatus: "pending" | "rejected" | "verified";
9710
10573
  expiryDate?: Date | Timestamp | undefined;
9711
10574
  }>;
9712
10575
  declare const practitionerWorkingHoursSchema: z.ZodObject<{
@@ -10117,7 +10980,7 @@ declare const practitionerSchema: z.ZodObject<{
10117
10980
  licenseNumber: string;
10118
10981
  issuingAuthority: string;
10119
10982
  issueDate: Date | Timestamp;
10120
- verificationStatus: "pending" | "verified" | "rejected";
10983
+ verificationStatus: "pending" | "rejected" | "verified";
10121
10984
  expiryDate?: Date | Timestamp | undefined;
10122
10985
  }, {
10123
10986
  level: CertificationLevel;
@@ -10125,7 +10988,7 @@ declare const practitionerSchema: z.ZodObject<{
10125
10988
  licenseNumber: string;
10126
10989
  issuingAuthority: string;
10127
10990
  issueDate: Date | Timestamp;
10128
- verificationStatus: "pending" | "verified" | "rejected";
10991
+ verificationStatus: "pending" | "rejected" | "verified";
10129
10992
  expiryDate?: Date | Timestamp | undefined;
10130
10993
  }>;
10131
10994
  clinics: z.ZodArray<z.ZodString, "many">;
@@ -10444,9 +11307,9 @@ declare const practitionerSchema: z.ZodObject<{
10444
11307
  id: string;
10445
11308
  name: string;
10446
11309
  duration: number;
10447
- family: ProcedureFamily;
10448
11310
  practitionerId: string;
10449
11311
  clinicId: string;
11312
+ family: ProcedureFamily;
10450
11313
  currency: Currency;
10451
11314
  categoryName: string;
10452
11315
  subcategoryName: string;
@@ -10461,9 +11324,9 @@ declare const practitionerSchema: z.ZodObject<{
10461
11324
  id: string;
10462
11325
  name: string;
10463
11326
  duration: number;
10464
- family: ProcedureFamily;
10465
11327
  practitionerId: string;
10466
11328
  clinicId: string;
11329
+ family: ProcedureFamily;
10467
11330
  currency: Currency;
10468
11331
  categoryName: string;
10469
11332
  subcategoryName: string;
@@ -10533,7 +11396,7 @@ declare const practitionerSchema: z.ZodObject<{
10533
11396
  licenseNumber: string;
10534
11397
  issuingAuthority: string;
10535
11398
  issueDate: Date | Timestamp;
10536
- verificationStatus: "pending" | "verified" | "rejected";
11399
+ verificationStatus: "pending" | "rejected" | "verified";
10537
11400
  expiryDate?: Date | Timestamp | undefined;
10538
11401
  };
10539
11402
  clinics: string[];
@@ -10600,9 +11463,9 @@ declare const practitionerSchema: z.ZodObject<{
10600
11463
  id: string;
10601
11464
  name: string;
10602
11465
  duration: number;
10603
- family: ProcedureFamily;
10604
11466
  practitionerId: string;
10605
11467
  clinicId: string;
11468
+ family: ProcedureFamily;
10606
11469
  currency: Currency;
10607
11470
  categoryName: string;
10608
11471
  subcategoryName: string;
@@ -10649,7 +11512,7 @@ declare const practitionerSchema: z.ZodObject<{
10649
11512
  licenseNumber: string;
10650
11513
  issuingAuthority: string;
10651
11514
  issueDate: Date | Timestamp;
10652
- verificationStatus: "pending" | "verified" | "rejected";
11515
+ verificationStatus: "pending" | "rejected" | "verified";
10653
11516
  expiryDate?: Date | Timestamp | undefined;
10654
11517
  };
10655
11518
  clinics: string[];
@@ -10716,9 +11579,9 @@ declare const practitionerSchema: z.ZodObject<{
10716
11579
  id: string;
10717
11580
  name: string;
10718
11581
  duration: number;
10719
- family: ProcedureFamily;
10720
11582
  practitionerId: string;
10721
11583
  clinicId: string;
11584
+ family: ProcedureFamily;
10722
11585
  currency: Currency;
10723
11586
  categoryName: string;
10724
11587
  subcategoryName: string;
@@ -10794,7 +11657,7 @@ declare const createPractitionerSchema: z.ZodObject<{
10794
11657
  licenseNumber: string;
10795
11658
  issuingAuthority: string;
10796
11659
  issueDate: Date | Timestamp;
10797
- verificationStatus: "pending" | "verified" | "rejected";
11660
+ verificationStatus: "pending" | "rejected" | "verified";
10798
11661
  expiryDate?: Date | Timestamp | undefined;
10799
11662
  }, {
10800
11663
  level: CertificationLevel;
@@ -10802,7 +11665,7 @@ declare const createPractitionerSchema: z.ZodObject<{
10802
11665
  licenseNumber: string;
10803
11666
  issuingAuthority: string;
10804
11667
  issueDate: Date | Timestamp;
10805
- verificationStatus: "pending" | "verified" | "rejected";
11668
+ verificationStatus: "pending" | "rejected" | "verified";
10806
11669
  expiryDate?: Date | Timestamp | undefined;
10807
11670
  }>;
10808
11671
  clinics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -11120,9 +11983,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11120
11983
  id: string;
11121
11984
  name: string;
11122
11985
  duration: number;
11123
- family: ProcedureFamily;
11124
11986
  practitionerId: string;
11125
11987
  clinicId: string;
11988
+ family: ProcedureFamily;
11126
11989
  currency: Currency;
11127
11990
  categoryName: string;
11128
11991
  subcategoryName: string;
@@ -11137,9 +12000,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11137
12000
  id: string;
11138
12001
  name: string;
11139
12002
  duration: number;
11140
- family: ProcedureFamily;
11141
12003
  practitionerId: string;
11142
12004
  clinicId: string;
12005
+ family: ProcedureFamily;
11143
12006
  currency: Currency;
11144
12007
  categoryName: string;
11145
12008
  subcategoryName: string;
@@ -11175,7 +12038,7 @@ declare const createPractitionerSchema: z.ZodObject<{
11175
12038
  licenseNumber: string;
11176
12039
  issuingAuthority: string;
11177
12040
  issueDate: Date | Timestamp;
11178
- verificationStatus: "pending" | "verified" | "rejected";
12041
+ verificationStatus: "pending" | "rejected" | "verified";
11179
12042
  expiryDate?: Date | Timestamp | undefined;
11180
12043
  };
11181
12044
  isVerified: boolean;
@@ -11242,9 +12105,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11242
12105
  id: string;
11243
12106
  name: string;
11244
12107
  duration: number;
11245
- family: ProcedureFamily;
11246
12108
  practitionerId: string;
11247
12109
  clinicId: string;
12110
+ family: ProcedureFamily;
11248
12111
  currency: Currency;
11249
12112
  categoryName: string;
11250
12113
  subcategoryName: string;
@@ -11277,7 +12140,7 @@ declare const createPractitionerSchema: z.ZodObject<{
11277
12140
  licenseNumber: string;
11278
12141
  issuingAuthority: string;
11279
12142
  issueDate: Date | Timestamp;
11280
- verificationStatus: "pending" | "verified" | "rejected";
12143
+ verificationStatus: "pending" | "rejected" | "verified";
11281
12144
  expiryDate?: Date | Timestamp | undefined;
11282
12145
  };
11283
12146
  isVerified: boolean;
@@ -11344,9 +12207,9 @@ declare const createPractitionerSchema: z.ZodObject<{
11344
12207
  id: string;
11345
12208
  name: string;
11346
12209
  duration: number;
11347
- family: ProcedureFamily;
11348
12210
  practitionerId: string;
11349
12211
  clinicId: string;
12212
+ family: ProcedureFamily;
11350
12213
  currency: Currency;
11351
12214
  categoryName: string;
11352
12215
  subcategoryName: string;
@@ -11411,7 +12274,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11411
12274
  licenseNumber: string;
11412
12275
  issuingAuthority: string;
11413
12276
  issueDate: Date | Timestamp;
11414
- verificationStatus: "pending" | "verified" | "rejected";
12277
+ verificationStatus: "pending" | "rejected" | "verified";
11415
12278
  expiryDate?: Date | Timestamp | undefined;
11416
12279
  }, {
11417
12280
  level: CertificationLevel;
@@ -11419,7 +12282,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11419
12282
  licenseNumber: string;
11420
12283
  issuingAuthority: string;
11421
12284
  issueDate: Date | Timestamp;
11422
- verificationStatus: "pending" | "verified" | "rejected";
12285
+ verificationStatus: "pending" | "rejected" | "verified";
11423
12286
  expiryDate?: Date | Timestamp | undefined;
11424
12287
  }>;
11425
12288
  clinics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -11737,9 +12600,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11737
12600
  id: string;
11738
12601
  name: string;
11739
12602
  duration: number;
11740
- family: ProcedureFamily;
11741
12603
  practitionerId: string;
11742
12604
  clinicId: string;
12605
+ family: ProcedureFamily;
11743
12606
  currency: Currency;
11744
12607
  categoryName: string;
11745
12608
  subcategoryName: string;
@@ -11754,9 +12617,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11754
12617
  id: string;
11755
12618
  name: string;
11756
12619
  duration: number;
11757
- family: ProcedureFamily;
11758
12620
  practitionerId: string;
11759
12621
  clinicId: string;
12622
+ family: ProcedureFamily;
11760
12623
  currency: Currency;
11761
12624
  categoryName: string;
11762
12625
  subcategoryName: string;
@@ -11790,7 +12653,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11790
12653
  licenseNumber: string;
11791
12654
  issuingAuthority: string;
11792
12655
  issueDate: Date | Timestamp;
11793
- verificationStatus: "pending" | "verified" | "rejected";
12656
+ verificationStatus: "pending" | "rejected" | "verified";
11794
12657
  expiryDate?: Date | Timestamp | undefined;
11795
12658
  };
11796
12659
  isVerified: boolean;
@@ -11856,9 +12719,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11856
12719
  id: string;
11857
12720
  name: string;
11858
12721
  duration: number;
11859
- family: ProcedureFamily;
11860
12722
  practitionerId: string;
11861
12723
  clinicId: string;
12724
+ family: ProcedureFamily;
11862
12725
  currency: Currency;
11863
12726
  categoryName: string;
11864
12727
  subcategoryName: string;
@@ -11889,7 +12752,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11889
12752
  licenseNumber: string;
11890
12753
  issuingAuthority: string;
11891
12754
  issueDate: Date | Timestamp;
11892
- verificationStatus: "pending" | "verified" | "rejected";
12755
+ verificationStatus: "pending" | "rejected" | "verified";
11893
12756
  expiryDate?: Date | Timestamp | undefined;
11894
12757
  };
11895
12758
  isActive?: boolean | undefined;
@@ -11956,9 +12819,9 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
11956
12819
  id: string;
11957
12820
  name: string;
11958
12821
  duration: number;
11959
- family: ProcedureFamily;
11960
12822
  practitionerId: string;
11961
12823
  clinicId: string;
12824
+ family: ProcedureFamily;
11962
12825
  currency: Currency;
11963
12826
  categoryName: string;
11964
12827
  subcategoryName: string;
@@ -13493,15 +14356,15 @@ declare const clinicSchema: z.ZodObject<{
13493
14356
  }, "strip", z.ZodTypeAny, {
13494
14357
  id: string;
13495
14358
  name: string;
13496
- photo: string;
13497
14359
  rating: number;
14360
+ photo: string;
13498
14361
  services: string[];
13499
14362
  description?: string | null | undefined;
13500
14363
  }, {
13501
14364
  id: string;
13502
14365
  name: string;
13503
- photo: string;
13504
14366
  rating: number;
14367
+ photo: string;
13505
14368
  services: string[];
13506
14369
  description?: string | null | undefined;
13507
14370
  }>, "many">;
@@ -13527,9 +14390,9 @@ declare const clinicSchema: z.ZodObject<{
13527
14390
  id: string;
13528
14391
  name: string;
13529
14392
  duration: number;
13530
- family: ProcedureFamily;
13531
14393
  practitionerId: string;
13532
14394
  clinicId: string;
14395
+ family: ProcedureFamily;
13533
14396
  currency: Currency;
13534
14397
  categoryName: string;
13535
14398
  subcategoryName: string;
@@ -13544,9 +14407,9 @@ declare const clinicSchema: z.ZodObject<{
13544
14407
  id: string;
13545
14408
  name: string;
13546
14409
  duration: number;
13547
- family: ProcedureFamily;
13548
14410
  practitionerId: string;
13549
14411
  clinicId: string;
14412
+ family: ProcedureFamily;
13550
14413
  currency: Currency;
13551
14414
  categoryName: string;
13552
14415
  subcategoryName: string;
@@ -13604,9 +14467,9 @@ declare const clinicSchema: z.ZodObject<{
13604
14467
  id: string;
13605
14468
  name: string;
13606
14469
  duration: number;
13607
- family: ProcedureFamily;
13608
14470
  practitionerId: string;
13609
14471
  clinicId: string;
14472
+ family: ProcedureFamily;
13610
14473
  currency: Currency;
13611
14474
  categoryName: string;
13612
14475
  subcategoryName: string;
@@ -13697,14 +14560,6 @@ declare const clinicSchema: z.ZodObject<{
13697
14560
  coverPhoto: string | null;
13698
14561
  admins: string[];
13699
14562
  featuredPhotos: string[];
13700
- doctorsInfo: {
13701
- id: string;
13702
- name: string;
13703
- photo: string;
13704
- rating: number;
13705
- services: string[];
13706
- description?: string | null | undefined;
13707
- }[];
13708
14563
  reviewInfo: {
13709
14564
  cleanliness: number;
13710
14565
  facilities: number;
@@ -13715,6 +14570,14 @@ declare const clinicSchema: z.ZodObject<{
13715
14570
  averageRating: number;
13716
14571
  recommendationPercentage: number;
13717
14572
  };
14573
+ doctorsInfo: {
14574
+ id: string;
14575
+ name: string;
14576
+ rating: number;
14577
+ photo: string;
14578
+ services: string[];
14579
+ description?: string | null | undefined;
14580
+ }[];
13718
14581
  description?: string | null | undefined;
13719
14582
  logo?: string | undefined;
13720
14583
  photosWithTags?: {
@@ -13733,9 +14596,9 @@ declare const clinicSchema: z.ZodObject<{
13733
14596
  id: string;
13734
14597
  name: string;
13735
14598
  duration: number;
13736
- family: ProcedureFamily;
13737
14599
  practitionerId: string;
13738
14600
  clinicId: string;
14601
+ family: ProcedureFamily;
13739
14602
  currency: Currency;
13740
14603
  categoryName: string;
13741
14604
  subcategoryName: string;
@@ -13826,14 +14689,6 @@ declare const clinicSchema: z.ZodObject<{
13826
14689
  coverPhoto: string | null;
13827
14690
  admins: string[];
13828
14691
  featuredPhotos: string[];
13829
- doctorsInfo: {
13830
- id: string;
13831
- name: string;
13832
- photo: string;
13833
- rating: number;
13834
- services: string[];
13835
- description?: string | null | undefined;
13836
- }[];
13837
14692
  reviewInfo: {
13838
14693
  cleanliness: number;
13839
14694
  facilities: number;
@@ -13844,6 +14699,14 @@ declare const clinicSchema: z.ZodObject<{
13844
14699
  averageRating: number;
13845
14700
  recommendationPercentage: number;
13846
14701
  };
14702
+ doctorsInfo: {
14703
+ id: string;
14704
+ name: string;
14705
+ rating: number;
14706
+ photo: string;
14707
+ services: string[];
14708
+ description?: string | null | undefined;
14709
+ }[];
13847
14710
  description?: string | null | undefined;
13848
14711
  logo?: string | undefined;
13849
14712
  photosWithTags?: {
@@ -16358,7 +17221,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16358
17221
  licenseNumber: string;
16359
17222
  issuingAuthority: string;
16360
17223
  issueDate: Date | Timestamp;
16361
- verificationStatus: "pending" | "verified" | "rejected";
17224
+ verificationStatus: "pending" | "rejected" | "verified";
16362
17225
  expiryDate?: Date | Timestamp | undefined;
16363
17226
  }, {
16364
17227
  level: CertificationLevel;
@@ -16366,7 +17229,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16366
17229
  licenseNumber: string;
16367
17230
  issuingAuthority: string;
16368
17231
  issueDate: Date | Timestamp;
16369
- verificationStatus: "pending" | "verified" | "rejected";
17232
+ verificationStatus: "pending" | "rejected" | "verified";
16370
17233
  expiryDate?: Date | Timestamp | undefined;
16371
17234
  }>;
16372
17235
  }, "strip", z.ZodTypeAny, {
@@ -16378,7 +17241,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16378
17241
  licenseNumber: string;
16379
17242
  issuingAuthority: string;
16380
17243
  issueDate: Date | Timestamp;
16381
- verificationStatus: "pending" | "verified" | "rejected";
17244
+ verificationStatus: "pending" | "rejected" | "verified";
16382
17245
  expiryDate?: Date | Timestamp | undefined;
16383
17246
  };
16384
17247
  email: string;
@@ -16393,7 +17256,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16393
17256
  licenseNumber: string;
16394
17257
  issuingAuthority: string;
16395
17258
  issueDate: Date | Timestamp;
16396
- verificationStatus: "pending" | "verified" | "rejected";
17259
+ verificationStatus: "pending" | "rejected" | "verified";
16397
17260
  expiryDate?: Date | Timestamp | undefined;
16398
17261
  };
16399
17262
  email: string;
@@ -16505,9 +17368,9 @@ declare const createCalendarEventSchema: z.ZodObject<{
16505
17368
  createdAt?: any;
16506
17369
  updatedAt?: any;
16507
17370
  description?: string | undefined;
16508
- clinicBranchId?: string | null | undefined;
16509
17371
  procedureId?: string | null | undefined;
16510
17372
  appointmentId?: string | null | undefined;
17373
+ clinicBranchId?: string | null | undefined;
16511
17374
  eventLocation?: {
16512
17375
  latitude: number;
16513
17376
  longitude: number;
@@ -16528,7 +17391,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16528
17391
  licenseNumber: string;
16529
17392
  issuingAuthority: string;
16530
17393
  issueDate: Date | Timestamp;
16531
- verificationStatus: "pending" | "verified" | "rejected";
17394
+ verificationStatus: "pending" | "rejected" | "verified";
16532
17395
  expiryDate?: Date | Timestamp | undefined;
16533
17396
  };
16534
17397
  email: string;
@@ -16562,9 +17425,9 @@ declare const createCalendarEventSchema: z.ZodObject<{
16562
17425
  createdAt?: any;
16563
17426
  updatedAt?: any;
16564
17427
  description?: string | undefined;
16565
- clinicBranchId?: string | null | undefined;
16566
17428
  procedureId?: string | null | undefined;
16567
17429
  appointmentId?: string | null | undefined;
17430
+ clinicBranchId?: string | null | undefined;
16568
17431
  eventLocation?: {
16569
17432
  latitude: number;
16570
17433
  longitude: number;
@@ -16585,7 +17448,7 @@ declare const createCalendarEventSchema: z.ZodObject<{
16585
17448
  licenseNumber: string;
16586
17449
  issuingAuthority: string;
16587
17450
  issueDate: Date | Timestamp;
16588
- verificationStatus: "pending" | "verified" | "rejected";
17451
+ verificationStatus: "pending" | "rejected" | "verified";
16589
17452
  expiryDate?: Date | Timestamp | undefined;
16590
17453
  };
16591
17454
  email: string;
@@ -16716,7 +17579,7 @@ declare const calendarEventSchema: z.ZodObject<{
16716
17579
  licenseNumber: string;
16717
17580
  issuingAuthority: string;
16718
17581
  issueDate: Date | Timestamp;
16719
- verificationStatus: "pending" | "verified" | "rejected";
17582
+ verificationStatus: "pending" | "rejected" | "verified";
16720
17583
  expiryDate?: Date | Timestamp | undefined;
16721
17584
  }, {
16722
17585
  level: CertificationLevel;
@@ -16724,7 +17587,7 @@ declare const calendarEventSchema: z.ZodObject<{
16724
17587
  licenseNumber: string;
16725
17588
  issuingAuthority: string;
16726
17589
  issueDate: Date | Timestamp;
16727
- verificationStatus: "pending" | "verified" | "rejected";
17590
+ verificationStatus: "pending" | "rejected" | "verified";
16728
17591
  expiryDate?: Date | Timestamp | undefined;
16729
17592
  }>;
16730
17593
  }, "strip", z.ZodTypeAny, {
@@ -16736,7 +17599,7 @@ declare const calendarEventSchema: z.ZodObject<{
16736
17599
  licenseNumber: string;
16737
17600
  issuingAuthority: string;
16738
17601
  issueDate: Date | Timestamp;
16739
- verificationStatus: "pending" | "verified" | "rejected";
17602
+ verificationStatus: "pending" | "rejected" | "verified";
16740
17603
  expiryDate?: Date | Timestamp | undefined;
16741
17604
  };
16742
17605
  email: string;
@@ -16751,7 +17614,7 @@ declare const calendarEventSchema: z.ZodObject<{
16751
17614
  licenseNumber: string;
16752
17615
  issuingAuthority: string;
16753
17616
  issueDate: Date | Timestamp;
16754
- verificationStatus: "pending" | "verified" | "rejected";
17617
+ verificationStatus: "pending" | "rejected" | "verified";
16755
17618
  expiryDate?: Date | Timestamp | undefined;
16756
17619
  };
16757
17620
  email: string;
@@ -16901,9 +17764,9 @@ declare const calendarEventSchema: z.ZodObject<{
16901
17764
  syncStatus: CalendarSyncStatus;
16902
17765
  eventType: CalendarEventType;
16903
17766
  description?: string | undefined;
16904
- clinicBranchId?: string | null | undefined;
16905
17767
  procedureId?: string | null | undefined;
16906
17768
  appointmentId?: string | null | undefined;
17769
+ clinicBranchId?: string | null | undefined;
16907
17770
  eventLocation?: {
16908
17771
  latitude: number;
16909
17772
  longitude: number;
@@ -16924,7 +17787,7 @@ declare const calendarEventSchema: z.ZodObject<{
16924
17787
  licenseNumber: string;
16925
17788
  issuingAuthority: string;
16926
17789
  issueDate: Date | Timestamp;
16927
- verificationStatus: "pending" | "verified" | "rejected";
17790
+ verificationStatus: "pending" | "rejected" | "verified";
16928
17791
  expiryDate?: Date | Timestamp | undefined;
16929
17792
  };
16930
17793
  email: string;
@@ -16972,9 +17835,9 @@ declare const calendarEventSchema: z.ZodObject<{
16972
17835
  syncStatus: CalendarSyncStatus;
16973
17836
  eventType: CalendarEventType;
16974
17837
  description?: string | undefined;
16975
- clinicBranchId?: string | null | undefined;
16976
17838
  procedureId?: string | null | undefined;
16977
17839
  appointmentId?: string | null | undefined;
17840
+ clinicBranchId?: string | null | undefined;
16978
17841
  eventLocation?: {
16979
17842
  latitude: number;
16980
17843
  longitude: number;
@@ -16995,7 +17858,7 @@ declare const calendarEventSchema: z.ZodObject<{
16995
17858
  licenseNumber: string;
16996
17859
  issuingAuthority: string;
16997
17860
  issueDate: Date | Timestamp;
16998
- verificationStatus: "pending" | "verified" | "rejected";
17861
+ verificationStatus: "pending" | "rejected" | "verified";
16999
17862
  expiryDate?: Date | Timestamp | undefined;
17000
17863
  };
17001
17864
  email: string;
@@ -17055,7 +17918,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17055
17918
  licenseNumber: string;
17056
17919
  issuingAuthority: string;
17057
17920
  issueDate: Date | Timestamp;
17058
- verificationStatus: "pending" | "verified" | "rejected";
17921
+ verificationStatus: "pending" | "rejected" | "verified";
17059
17922
  expiryDate?: Date | Timestamp | undefined;
17060
17923
  }, {
17061
17924
  level: CertificationLevel;
@@ -17063,7 +17926,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17063
17926
  licenseNumber: string;
17064
17927
  issuingAuthority: string;
17065
17928
  issueDate: Date | Timestamp;
17066
- verificationStatus: "pending" | "verified" | "rejected";
17929
+ verificationStatus: "pending" | "rejected" | "verified";
17067
17930
  expiryDate?: Date | Timestamp | undefined;
17068
17931
  }>;
17069
17932
  }, "strip", z.ZodTypeAny, {
@@ -17075,7 +17938,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17075
17938
  licenseNumber: string;
17076
17939
  issuingAuthority: string;
17077
17940
  issueDate: Date | Timestamp;
17078
- verificationStatus: "pending" | "verified" | "rejected";
17941
+ verificationStatus: "pending" | "rejected" | "verified";
17079
17942
  expiryDate?: Date | Timestamp | undefined;
17080
17943
  };
17081
17944
  email: string;
@@ -17090,7 +17953,7 @@ declare const practitionerProfileInfoSchema: z.ZodObject<{
17090
17953
  licenseNumber: string;
17091
17954
  issuingAuthority: string;
17092
17955
  issueDate: Date | Timestamp;
17093
- verificationStatus: "pending" | "verified" | "rejected";
17956
+ verificationStatus: "pending" | "rejected" | "verified";
17094
17957
  expiryDate?: Date | Timestamp | undefined;
17095
17958
  };
17096
17959
  email: string;
@@ -17189,8 +18052,8 @@ declare const clinicReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17189
18052
  isVerified: boolean;
17190
18053
  patientId: string;
17191
18054
  clinicId: string;
17192
- fullReviewId: string;
17193
18055
  comment: string;
18056
+ fullReviewId: string;
17194
18057
  isPublished: boolean;
17195
18058
  cleanliness: number;
17196
18059
  facilities: number;
@@ -17206,8 +18069,8 @@ declare const clinicReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17206
18069
  isVerified: boolean;
17207
18070
  patientId: string;
17208
18071
  clinicId: string;
17209
- fullReviewId: string;
17210
18072
  comment: string;
18073
+ fullReviewId: string;
17211
18074
  isPublished: boolean;
17212
18075
  cleanliness: number;
17213
18076
  facilities: number;
@@ -17286,8 +18149,8 @@ declare const practitionerReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17286
18149
  isVerified: boolean;
17287
18150
  patientId: string;
17288
18151
  practitionerId: string;
17289
- fullReviewId: string;
17290
18152
  comment: string;
18153
+ fullReviewId: string;
17291
18154
  isPublished: boolean;
17292
18155
  overallRating: number;
17293
18156
  wouldRecommend: boolean;
@@ -17303,8 +18166,8 @@ declare const practitionerReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17303
18166
  isVerified: boolean;
17304
18167
  patientId: string;
17305
18168
  practitionerId: string;
17306
- fullReviewId: string;
17307
18169
  comment: string;
18170
+ fullReviewId: string;
17308
18171
  isPublished: boolean;
17309
18172
  overallRating: number;
17310
18173
  wouldRecommend: boolean;
@@ -17383,8 +18246,8 @@ declare const procedureReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17383
18246
  isVerified: boolean;
17384
18247
  patientId: string;
17385
18248
  procedureId: string;
17386
- fullReviewId: string;
17387
18249
  comment: string;
18250
+ fullReviewId: string;
17388
18251
  isPublished: boolean;
17389
18252
  overallRating: number;
17390
18253
  wouldRecommend: boolean;
@@ -17400,8 +18263,8 @@ declare const procedureReviewSchema: z.ZodObject<z.objectUtil.extendShape<{
17400
18263
  isVerified: boolean;
17401
18264
  patientId: string;
17402
18265
  procedureId: string;
17403
- fullReviewId: string;
17404
18266
  comment: string;
18267
+ fullReviewId: string;
17405
18268
  isPublished: boolean;
17406
18269
  overallRating: number;
17407
18270
  wouldRecommend: boolean;
@@ -17579,8 +18442,8 @@ declare const reviewSchema: z.ZodObject<{
17579
18442
  isVerified: boolean;
17580
18443
  patientId: string;
17581
18444
  clinicId: string;
17582
- fullReviewId: string;
17583
18445
  comment: string;
18446
+ fullReviewId: string;
17584
18447
  isPublished: boolean;
17585
18448
  cleanliness: number;
17586
18449
  facilities: number;
@@ -17596,8 +18459,8 @@ declare const reviewSchema: z.ZodObject<{
17596
18459
  isVerified: boolean;
17597
18460
  patientId: string;
17598
18461
  clinicId: string;
17599
- fullReviewId: string;
17600
18462
  comment: string;
18463
+ fullReviewId: string;
17601
18464
  isPublished: boolean;
17602
18465
  cleanliness: number;
17603
18466
  facilities: number;
@@ -17632,8 +18495,8 @@ declare const reviewSchema: z.ZodObject<{
17632
18495
  isVerified: boolean;
17633
18496
  patientId: string;
17634
18497
  practitionerId: string;
17635
- fullReviewId: string;
17636
18498
  comment: string;
18499
+ fullReviewId: string;
17637
18500
  isPublished: boolean;
17638
18501
  overallRating: number;
17639
18502
  wouldRecommend: boolean;
@@ -17649,8 +18512,8 @@ declare const reviewSchema: z.ZodObject<{
17649
18512
  isVerified: boolean;
17650
18513
  patientId: string;
17651
18514
  practitionerId: string;
17652
- fullReviewId: string;
17653
18515
  comment: string;
18516
+ fullReviewId: string;
17654
18517
  isPublished: boolean;
17655
18518
  overallRating: number;
17656
18519
  wouldRecommend: boolean;
@@ -17685,8 +18548,8 @@ declare const reviewSchema: z.ZodObject<{
17685
18548
  isVerified: boolean;
17686
18549
  patientId: string;
17687
18550
  procedureId: string;
17688
- fullReviewId: string;
17689
18551
  comment: string;
18552
+ fullReviewId: string;
17690
18553
  isPublished: boolean;
17691
18554
  overallRating: number;
17692
18555
  wouldRecommend: boolean;
@@ -17702,8 +18565,8 @@ declare const reviewSchema: z.ZodObject<{
17702
18565
  isVerified: boolean;
17703
18566
  patientId: string;
17704
18567
  procedureId: string;
17705
- fullReviewId: string;
17706
18568
  comment: string;
18569
+ fullReviewId: string;
17707
18570
  isPublished: boolean;
17708
18571
  overallRating: number;
17709
18572
  wouldRecommend: boolean;
@@ -17720,8 +18583,8 @@ declare const reviewSchema: z.ZodObject<{
17720
18583
  createdAt: Date;
17721
18584
  updatedAt: Date;
17722
18585
  patientId: string;
17723
- overallRating: number;
17724
18586
  appointmentId: string;
18587
+ overallRating: number;
17725
18588
  overallComment: string;
17726
18589
  clinicReview?: {
17727
18590
  id: string;
@@ -17730,8 +18593,8 @@ declare const reviewSchema: z.ZodObject<{
17730
18593
  isVerified: boolean;
17731
18594
  patientId: string;
17732
18595
  clinicId: string;
17733
- fullReviewId: string;
17734
18596
  comment: string;
18597
+ fullReviewId: string;
17735
18598
  isPublished: boolean;
17736
18599
  cleanliness: number;
17737
18600
  facilities: number;
@@ -17748,8 +18611,8 @@ declare const reviewSchema: z.ZodObject<{
17748
18611
  isVerified: boolean;
17749
18612
  patientId: string;
17750
18613
  practitionerId: string;
17751
- fullReviewId: string;
17752
18614
  comment: string;
18615
+ fullReviewId: string;
17753
18616
  isPublished: boolean;
17754
18617
  overallRating: number;
17755
18618
  wouldRecommend: boolean;
@@ -17766,8 +18629,8 @@ declare const reviewSchema: z.ZodObject<{
17766
18629
  isVerified: boolean;
17767
18630
  patientId: string;
17768
18631
  procedureId: string;
17769
- fullReviewId: string;
17770
18632
  comment: string;
18633
+ fullReviewId: string;
17771
18634
  isPublished: boolean;
17772
18635
  overallRating: number;
17773
18636
  wouldRecommend: boolean;
@@ -17782,8 +18645,8 @@ declare const reviewSchema: z.ZodObject<{
17782
18645
  createdAt: Date;
17783
18646
  updatedAt: Date;
17784
18647
  patientId: string;
17785
- overallRating: number;
17786
18648
  appointmentId: string;
18649
+ overallRating: number;
17787
18650
  overallComment: string;
17788
18651
  clinicReview?: {
17789
18652
  id: string;
@@ -17792,8 +18655,8 @@ declare const reviewSchema: z.ZodObject<{
17792
18655
  isVerified: boolean;
17793
18656
  patientId: string;
17794
18657
  clinicId: string;
17795
- fullReviewId: string;
17796
18658
  comment: string;
18659
+ fullReviewId: string;
17797
18660
  isPublished: boolean;
17798
18661
  cleanliness: number;
17799
18662
  facilities: number;
@@ -17810,8 +18673,8 @@ declare const reviewSchema: z.ZodObject<{
17810
18673
  isVerified: boolean;
17811
18674
  patientId: string;
17812
18675
  practitionerId: string;
17813
- fullReviewId: string;
17814
18676
  comment: string;
18677
+ fullReviewId: string;
17815
18678
  isPublished: boolean;
17816
18679
  overallRating: number;
17817
18680
  wouldRecommend: boolean;
@@ -17828,8 +18691,8 @@ declare const reviewSchema: z.ZodObject<{
17828
18691
  isVerified: boolean;
17829
18692
  patientId: string;
17830
18693
  procedureId: string;
17831
- fullReviewId: string;
17832
18694
  comment: string;
18695
+ fullReviewId: string;
17833
18696
  isPublished: boolean;
17834
18697
  overallRating: number;
17835
18698
  wouldRecommend: boolean;
@@ -18130,4 +18993,4 @@ declare const createReviewSchema: z.ZodEffects<z.ZodObject<{
18130
18993
  } | undefined;
18131
18994
  }>;
18132
18995
 
18133
- 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 };