@blackcode_sa/metaestetics-api 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +17 -184
- package/dist/index.d.ts +17 -184
- package/dist/index.js +448 -415
- package/dist/index.mjs +431 -395
- package/package.json +1 -1
- package/src/services/practitioner/practitioner.service.ts +41 -6
- package/src/validations/clinic.schema.ts +5 -25
- package/src/validations/practitioner.schema.ts +3 -3
- package/src/validations/procedure.schema.ts +1 -1
- package/src/validations/shared.schema.ts +78 -0
package/dist/index.mjs
CHANGED
|
@@ -255,7 +255,7 @@ var UserRole = /* @__PURE__ */ ((UserRole2) => {
|
|
|
255
255
|
var USERS_COLLECTION = "users";
|
|
256
256
|
|
|
257
257
|
// src/services/auth.service.ts
|
|
258
|
-
import { z as
|
|
258
|
+
import { z as z19 } from "zod";
|
|
259
259
|
|
|
260
260
|
// src/validations/schemas.ts
|
|
261
261
|
import { z as z3 } from "zod";
|
|
@@ -792,7 +792,7 @@ var USER_ERRORS = {
|
|
|
792
792
|
};
|
|
793
793
|
|
|
794
794
|
// src/services/user.service.ts
|
|
795
|
-
import { z as
|
|
795
|
+
import { z as z15 } from "zod";
|
|
796
796
|
|
|
797
797
|
// src/services/patient/patient.service.ts
|
|
798
798
|
import {
|
|
@@ -2525,7 +2525,7 @@ import {
|
|
|
2525
2525
|
updateDoc as updateDoc7,
|
|
2526
2526
|
setDoc as setDoc6,
|
|
2527
2527
|
deleteDoc,
|
|
2528
|
-
Timestamp as
|
|
2528
|
+
Timestamp as Timestamp6,
|
|
2529
2529
|
serverTimestamp as serverTimestamp8
|
|
2530
2530
|
} from "firebase/firestore";
|
|
2531
2531
|
|
|
@@ -2654,52 +2654,8 @@ var SubscriptionModel = /* @__PURE__ */ ((SubscriptionModel2) => {
|
|
|
2654
2654
|
|
|
2655
2655
|
// src/validations/clinic.schema.ts
|
|
2656
2656
|
import { z as z12 } from "zod";
|
|
2657
|
-
import { Timestamp as Timestamp6 } from "firebase/firestore";
|
|
2658
|
-
|
|
2659
|
-
// src/validations/practitioner.schema.ts
|
|
2660
|
-
import { z as z11 } from "zod";
|
|
2661
2657
|
import { Timestamp as Timestamp5 } from "firebase/firestore";
|
|
2662
2658
|
|
|
2663
|
-
// src/backoffice/types/static/certification.types.ts
|
|
2664
|
-
var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
|
|
2665
|
-
CertificationLevel2["AESTHETICIAN"] = "aesthetician";
|
|
2666
|
-
CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
|
|
2667
|
-
CertificationLevel2["NURSE"] = "nurse";
|
|
2668
|
-
CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
|
|
2669
|
-
CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
|
|
2670
|
-
CertificationLevel2["DOCTOR"] = "doctor";
|
|
2671
|
-
CertificationLevel2["SPECIALIST"] = "specialist";
|
|
2672
|
-
CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
|
|
2673
|
-
return CertificationLevel2;
|
|
2674
|
-
})(CertificationLevel || {});
|
|
2675
|
-
var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
|
|
2676
|
-
CertificationSpecialty3["LASER"] = "laser";
|
|
2677
|
-
CertificationSpecialty3["INJECTABLES"] = "injectables";
|
|
2678
|
-
CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
|
|
2679
|
-
CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
|
|
2680
|
-
CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
|
|
2681
|
-
CertificationSpecialty3["SKIN_CARE"] = "skin_care";
|
|
2682
|
-
CertificationSpecialty3["WOUND_CARE"] = "wound_care";
|
|
2683
|
-
CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
|
|
2684
|
-
return CertificationSpecialty3;
|
|
2685
|
-
})(CertificationSpecialty || {});
|
|
2686
|
-
|
|
2687
|
-
// src/types/practitioner/index.ts
|
|
2688
|
-
var PRACTITIONERS_COLLECTION = "practitioners";
|
|
2689
|
-
var REGISTER_TOKENS_COLLECTION = "register_tokens";
|
|
2690
|
-
var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
|
|
2691
|
-
PractitionerStatus2["DRAFT"] = "draft";
|
|
2692
|
-
PractitionerStatus2["ACTIVE"] = "active";
|
|
2693
|
-
return PractitionerStatus2;
|
|
2694
|
-
})(PractitionerStatus || {});
|
|
2695
|
-
var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
|
|
2696
|
-
PractitionerTokenStatus2["ACTIVE"] = "active";
|
|
2697
|
-
PractitionerTokenStatus2["USED"] = "used";
|
|
2698
|
-
PractitionerTokenStatus2["EXPIRED"] = "expired";
|
|
2699
|
-
PractitionerTokenStatus2["REVOKED"] = "revoked";
|
|
2700
|
-
return PractitionerTokenStatus2;
|
|
2701
|
-
})(PractitionerTokenStatus || {});
|
|
2702
|
-
|
|
2703
2659
|
// src/validations/reviews.schema.ts
|
|
2704
2660
|
import { z as z10 } from "zod";
|
|
2705
2661
|
var baseReviewSchema = z10.object({
|
|
@@ -2833,6 +2789,9 @@ var createReviewSchema = z10.object({
|
|
|
2833
2789
|
}
|
|
2834
2790
|
);
|
|
2835
2791
|
|
|
2792
|
+
// src/validations/shared.schema.ts
|
|
2793
|
+
import { z as z11 } from "zod";
|
|
2794
|
+
|
|
2836
2795
|
// src/backoffice/types/static/procedure-family.types.ts
|
|
2837
2796
|
var ProcedureFamily = /* @__PURE__ */ ((ProcedureFamily2) => {
|
|
2838
2797
|
ProcedureFamily2["AESTHETICS"] = "aesthetics";
|
|
@@ -2859,59 +2818,21 @@ var Currency = /* @__PURE__ */ ((Currency2) => {
|
|
|
2859
2818
|
return Currency2;
|
|
2860
2819
|
})(Currency || {});
|
|
2861
2820
|
|
|
2862
|
-
// src/validations/
|
|
2863
|
-
var
|
|
2864
|
-
firstName: z11.string().min(2).max(50),
|
|
2865
|
-
lastName: z11.string().min(2).max(50),
|
|
2866
|
-
title: z11.string().min(2).max(100),
|
|
2821
|
+
// src/validations/shared.schema.ts
|
|
2822
|
+
var sharedClinicContactInfoSchema = z11.object({
|
|
2867
2823
|
email: z11.string().email(),
|
|
2868
|
-
phoneNumber: z11.string()
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
profileImageUrl: z11.string().url().optional(),
|
|
2872
|
-
bio: z11.string().max(1e3).optional(),
|
|
2873
|
-
languages: z11.array(z11.string()).min(1)
|
|
2874
|
-
});
|
|
2875
|
-
var practitionerCertificationSchema = z11.object({
|
|
2876
|
-
level: z11.nativeEnum(CertificationLevel),
|
|
2877
|
-
specialties: z11.array(z11.nativeEnum(CertificationSpecialty)),
|
|
2878
|
-
licenseNumber: z11.string().min(3).max(50),
|
|
2879
|
-
issuingAuthority: z11.string().min(2).max(100),
|
|
2880
|
-
issueDate: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2881
|
-
expiryDate: z11.instanceof(Timestamp5).or(z11.date()).optional(),
|
|
2882
|
-
verificationStatus: z11.enum(["pending", "verified", "rejected"])
|
|
2883
|
-
});
|
|
2884
|
-
var timeSlotSchema = z11.object({
|
|
2885
|
-
start: z11.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
|
|
2886
|
-
end: z11.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
|
|
2887
|
-
}).nullable();
|
|
2888
|
-
var practitionerWorkingHoursSchema = z11.object({
|
|
2889
|
-
practitionerId: z11.string().min(1),
|
|
2890
|
-
clinicId: z11.string().min(1),
|
|
2891
|
-
monday: timeSlotSchema,
|
|
2892
|
-
tuesday: timeSlotSchema,
|
|
2893
|
-
wednesday: timeSlotSchema,
|
|
2894
|
-
thursday: timeSlotSchema,
|
|
2895
|
-
friday: timeSlotSchema,
|
|
2896
|
-
saturday: timeSlotSchema,
|
|
2897
|
-
sunday: timeSlotSchema,
|
|
2898
|
-
createdAt: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2899
|
-
updatedAt: z11.instanceof(Timestamp5).or(z11.date())
|
|
2824
|
+
phoneNumber: z11.string(),
|
|
2825
|
+
alternativePhoneNumber: z11.string().nullable().optional(),
|
|
2826
|
+
website: z11.string().nullable().optional()
|
|
2900
2827
|
});
|
|
2901
|
-
var
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
saturday: timeSlotSchema,
|
|
2910
|
-
sunday: timeSlotSchema
|
|
2911
|
-
}),
|
|
2912
|
-
isActive: z11.boolean(),
|
|
2913
|
-
createdAt: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2914
|
-
updatedAt: z11.instanceof(Timestamp5).or(z11.date())
|
|
2828
|
+
var sharedClinicLocationSchema = z11.object({
|
|
2829
|
+
address: z11.string(),
|
|
2830
|
+
city: z11.string(),
|
|
2831
|
+
country: z11.string(),
|
|
2832
|
+
postalCode: z11.string(),
|
|
2833
|
+
latitude: z11.number().min(-90).max(90),
|
|
2834
|
+
longitude: z11.number().min(-180).max(180),
|
|
2835
|
+
geohash: z11.string().nullable().optional()
|
|
2915
2836
|
});
|
|
2916
2837
|
var procedureSummaryInfoSchema = z11.object({
|
|
2917
2838
|
id: z11.string().min(1),
|
|
@@ -2931,79 +2852,22 @@ var procedureSummaryInfoSchema = z11.object({
|
|
|
2931
2852
|
practitionerId: z11.string().min(1),
|
|
2932
2853
|
practitionerName: z11.string().min(1)
|
|
2933
2854
|
});
|
|
2934
|
-
var
|
|
2935
|
-
id: z11.string()
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
clinicsInfo: z11.array(clinicInfoSchema),
|
|
2942
|
-
procedures: z11.array(z11.string()),
|
|
2943
|
-
proceduresInfo: z11.array(procedureSummaryInfoSchema),
|
|
2944
|
-
reviewInfo: practitionerReviewInfoSchema,
|
|
2945
|
-
isActive: z11.boolean(),
|
|
2946
|
-
isVerified: z11.boolean(),
|
|
2947
|
-
status: z11.nativeEnum(PractitionerStatus),
|
|
2948
|
-
createdAt: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2949
|
-
updatedAt: z11.instanceof(Timestamp5).or(z11.date())
|
|
2950
|
-
});
|
|
2951
|
-
var createPractitionerSchema = z11.object({
|
|
2952
|
-
userRef: z11.string().min(1),
|
|
2953
|
-
basicInfo: practitionerBasicInfoSchema,
|
|
2954
|
-
certification: practitionerCertificationSchema,
|
|
2955
|
-
clinics: z11.array(z11.string()).optional(),
|
|
2956
|
-
clinicWorkingHours: z11.array(practitionerClinicWorkingHoursSchema).optional(),
|
|
2957
|
-
clinicsInfo: z11.array(clinicInfoSchema).optional(),
|
|
2958
|
-
proceduresInfo: z11.array(procedureSummaryInfoSchema).optional(),
|
|
2959
|
-
isActive: z11.boolean(),
|
|
2960
|
-
isVerified: z11.boolean(),
|
|
2961
|
-
status: z11.nativeEnum(PractitionerStatus).optional()
|
|
2962
|
-
});
|
|
2963
|
-
var createDraftPractitionerSchema = z11.object({
|
|
2964
|
-
basicInfo: practitionerBasicInfoSchema,
|
|
2965
|
-
certification: practitionerCertificationSchema,
|
|
2966
|
-
clinics: z11.array(z11.string()).optional(),
|
|
2967
|
-
clinicWorkingHours: z11.array(practitionerClinicWorkingHoursSchema).optional(),
|
|
2968
|
-
clinicsInfo: z11.array(clinicInfoSchema).optional(),
|
|
2969
|
-
proceduresInfo: z11.array(procedureSummaryInfoSchema).optional(),
|
|
2970
|
-
isActive: z11.boolean().optional().default(false),
|
|
2971
|
-
isVerified: z11.boolean().optional().default(false)
|
|
2972
|
-
});
|
|
2973
|
-
var practitionerTokenSchema = z11.object({
|
|
2974
|
-
id: z11.string().min(1),
|
|
2975
|
-
token: z11.string().min(6),
|
|
2976
|
-
practitionerId: z11.string().min(1),
|
|
2977
|
-
email: z11.string().email(),
|
|
2978
|
-
clinicId: z11.string().min(1),
|
|
2979
|
-
status: z11.nativeEnum(PractitionerTokenStatus),
|
|
2980
|
-
createdBy: z11.string().min(1),
|
|
2981
|
-
createdAt: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2982
|
-
expiresAt: z11.instanceof(Timestamp5).or(z11.date()),
|
|
2983
|
-
usedBy: z11.string().optional(),
|
|
2984
|
-
usedAt: z11.instanceof(Timestamp5).or(z11.date()).optional()
|
|
2855
|
+
var clinicInfoSchema = z11.object({
|
|
2856
|
+
id: z11.string(),
|
|
2857
|
+
featuredPhoto: z11.string(),
|
|
2858
|
+
name: z11.string(),
|
|
2859
|
+
description: z11.string().nullable().optional(),
|
|
2860
|
+
location: sharedClinicLocationSchema,
|
|
2861
|
+
contactInfo: sharedClinicContactInfoSchema
|
|
2985
2862
|
});
|
|
2986
|
-
var
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
password: z11.string().min(8),
|
|
2995
|
-
firstName: z11.string().min(2).max(50),
|
|
2996
|
-
lastName: z11.string().min(2).max(50),
|
|
2997
|
-
token: z11.string().optional(),
|
|
2998
|
-
profileData: z11.object({
|
|
2999
|
-
basicInfo: z11.object({
|
|
3000
|
-
phoneNumber: z11.string().optional(),
|
|
3001
|
-
profileImageUrl: z11.string().optional(),
|
|
3002
|
-
gender: z11.enum(["male", "female", "other"]).optional(),
|
|
3003
|
-
bio: z11.string().optional()
|
|
3004
|
-
}).optional(),
|
|
3005
|
-
certification: z11.any().optional()
|
|
3006
|
-
}).optional()
|
|
2863
|
+
var doctorInfoSchema = z11.object({
|
|
2864
|
+
id: z11.string(),
|
|
2865
|
+
name: z11.string(),
|
|
2866
|
+
description: z11.string().nullable().optional(),
|
|
2867
|
+
photo: z11.string(),
|
|
2868
|
+
rating: z11.number().min(0).max(5),
|
|
2869
|
+
services: z11.array(z11.string())
|
|
2870
|
+
// List of procedure IDs practitioner offers
|
|
3007
2871
|
});
|
|
3008
2872
|
|
|
3009
2873
|
// src/validations/clinic.schema.ts
|
|
@@ -3056,23 +2920,6 @@ var adminInfoSchema = z12.object({
|
|
|
3056
2920
|
name: z12.string(),
|
|
3057
2921
|
email: z12.string().email()
|
|
3058
2922
|
});
|
|
3059
|
-
var clinicInfoSchema = z12.object({
|
|
3060
|
-
id: z12.string(),
|
|
3061
|
-
featuredPhoto: z12.string(),
|
|
3062
|
-
name: z12.string(),
|
|
3063
|
-
description: z12.string().nullable().optional(),
|
|
3064
|
-
location: clinicLocationSchema,
|
|
3065
|
-
contactInfo: clinicContactInfoSchema
|
|
3066
|
-
});
|
|
3067
|
-
var doctorInfoSchema = z12.object({
|
|
3068
|
-
id: z12.string(),
|
|
3069
|
-
name: z12.string(),
|
|
3070
|
-
description: z12.string().nullable().optional(),
|
|
3071
|
-
photo: z12.string(),
|
|
3072
|
-
rating: z12.number().min(0).max(5),
|
|
3073
|
-
services: z12.array(z12.string())
|
|
3074
|
-
// List of procedure IDs practitioner offers
|
|
3075
|
-
});
|
|
3076
2923
|
var clinicAdminSchema = z12.object({
|
|
3077
2924
|
id: z12.string(),
|
|
3078
2925
|
userRef: z12.string(),
|
|
@@ -3082,8 +2929,8 @@ var clinicAdminSchema = z12.object({
|
|
|
3082
2929
|
clinicsManagedInfo: z12.array(clinicInfoSchema),
|
|
3083
2930
|
contactInfo: contactPersonSchema,
|
|
3084
2931
|
roleTitle: z12.string(),
|
|
3085
|
-
createdAt: z12.instanceof(Date).or(z12.instanceof(
|
|
3086
|
-
updatedAt: z12.instanceof(Date).or(z12.instanceof(
|
|
2932
|
+
createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
2933
|
+
updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3087
2934
|
isActive: z12.boolean()
|
|
3088
2935
|
});
|
|
3089
2936
|
var adminTokenSchema = z12.object({
|
|
@@ -3092,9 +2939,9 @@ var adminTokenSchema = z12.object({
|
|
|
3092
2939
|
email: z12.string().email().optional().nullable(),
|
|
3093
2940
|
status: z12.nativeEnum(AdminTokenStatus),
|
|
3094
2941
|
usedByUserRef: z12.string().optional(),
|
|
3095
|
-
createdAt: z12.instanceof(Date).or(z12.instanceof(
|
|
2942
|
+
createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3096
2943
|
// Timestamp
|
|
3097
|
-
expiresAt: z12.instanceof(Date).or(z12.instanceof(
|
|
2944
|
+
expiresAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5))
|
|
3098
2945
|
// Timestamp
|
|
3099
2946
|
});
|
|
3100
2947
|
var createAdminTokenSchema = z12.object({
|
|
@@ -3114,9 +2961,9 @@ var clinicGroupSchema = z12.object({
|
|
|
3114
2961
|
adminsInfo: z12.array(adminInfoSchema),
|
|
3115
2962
|
adminTokens: z12.array(adminTokenSchema),
|
|
3116
2963
|
ownerId: z12.string().nullable(),
|
|
3117
|
-
createdAt: z12.instanceof(Date).or(z12.instanceof(
|
|
2964
|
+
createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3118
2965
|
// Timestamp
|
|
3119
|
-
updatedAt: z12.instanceof(Date).or(z12.instanceof(
|
|
2966
|
+
updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3120
2967
|
// Timestamp
|
|
3121
2968
|
isActive: z12.boolean(),
|
|
3122
2969
|
logo: z12.string().optional().nullable(),
|
|
@@ -3156,9 +3003,9 @@ var clinicSchema = z12.object({
|
|
|
3156
3003
|
// servicesInfo: z.array(serviceInfoSchema), // Deprecated, use proceduresInfo
|
|
3157
3004
|
reviewInfo: clinicReviewInfoSchema,
|
|
3158
3005
|
admins: z12.array(z12.string()),
|
|
3159
|
-
createdAt: z12.instanceof(Date).or(z12.instanceof(
|
|
3006
|
+
createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3160
3007
|
// Timestamp
|
|
3161
|
-
updatedAt: z12.instanceof(Date).or(z12.instanceof(
|
|
3008
|
+
updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
|
|
3162
3009
|
// Timestamp
|
|
3163
3010
|
isActive: z12.boolean(),
|
|
3164
3011
|
isVerified: z12.boolean(),
|
|
@@ -3368,8 +3215,8 @@ async function createClinicAdmin(db, data, clinicGroupService) {
|
|
|
3368
3215
|
try {
|
|
3369
3216
|
clinicAdminSchema.parse({
|
|
3370
3217
|
...adminData,
|
|
3371
|
-
createdAt:
|
|
3372
|
-
updatedAt:
|
|
3218
|
+
createdAt: Timestamp6.now(),
|
|
3219
|
+
updatedAt: Timestamp6.now()
|
|
3373
3220
|
});
|
|
3374
3221
|
console.log("[CLINIC_ADMIN] Admin object validation passed");
|
|
3375
3222
|
} catch (schemaError) {
|
|
@@ -3738,7 +3585,182 @@ import {
|
|
|
3738
3585
|
arrayUnion as arrayUnion5,
|
|
3739
3586
|
arrayRemove as arrayRemove4
|
|
3740
3587
|
} from "firebase/firestore";
|
|
3588
|
+
|
|
3589
|
+
// src/types/practitioner/index.ts
|
|
3590
|
+
var PRACTITIONERS_COLLECTION = "practitioners";
|
|
3591
|
+
var REGISTER_TOKENS_COLLECTION = "register_tokens";
|
|
3592
|
+
var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
|
|
3593
|
+
PractitionerStatus2["DRAFT"] = "draft";
|
|
3594
|
+
PractitionerStatus2["ACTIVE"] = "active";
|
|
3595
|
+
return PractitionerStatus2;
|
|
3596
|
+
})(PractitionerStatus || {});
|
|
3597
|
+
var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
|
|
3598
|
+
PractitionerTokenStatus2["ACTIVE"] = "active";
|
|
3599
|
+
PractitionerTokenStatus2["USED"] = "used";
|
|
3600
|
+
PractitionerTokenStatus2["EXPIRED"] = "expired";
|
|
3601
|
+
PractitionerTokenStatus2["REVOKED"] = "revoked";
|
|
3602
|
+
return PractitionerTokenStatus2;
|
|
3603
|
+
})(PractitionerTokenStatus || {});
|
|
3604
|
+
|
|
3605
|
+
// src/validations/practitioner.schema.ts
|
|
3741
3606
|
import { z as z13 } from "zod";
|
|
3607
|
+
import { Timestamp as Timestamp7 } from "firebase/firestore";
|
|
3608
|
+
|
|
3609
|
+
// src/backoffice/types/static/certification.types.ts
|
|
3610
|
+
var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
|
|
3611
|
+
CertificationLevel2["AESTHETICIAN"] = "aesthetician";
|
|
3612
|
+
CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
|
|
3613
|
+
CertificationLevel2["NURSE"] = "nurse";
|
|
3614
|
+
CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
|
|
3615
|
+
CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
|
|
3616
|
+
CertificationLevel2["DOCTOR"] = "doctor";
|
|
3617
|
+
CertificationLevel2["SPECIALIST"] = "specialist";
|
|
3618
|
+
CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
|
|
3619
|
+
return CertificationLevel2;
|
|
3620
|
+
})(CertificationLevel || {});
|
|
3621
|
+
var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
|
|
3622
|
+
CertificationSpecialty3["LASER"] = "laser";
|
|
3623
|
+
CertificationSpecialty3["INJECTABLES"] = "injectables";
|
|
3624
|
+
CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
|
|
3625
|
+
CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
|
|
3626
|
+
CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
|
|
3627
|
+
CertificationSpecialty3["SKIN_CARE"] = "skin_care";
|
|
3628
|
+
CertificationSpecialty3["WOUND_CARE"] = "wound_care";
|
|
3629
|
+
CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
|
|
3630
|
+
return CertificationSpecialty3;
|
|
3631
|
+
})(CertificationSpecialty || {});
|
|
3632
|
+
|
|
3633
|
+
// src/validations/practitioner.schema.ts
|
|
3634
|
+
var practitionerBasicInfoSchema = z13.object({
|
|
3635
|
+
firstName: z13.string().min(2).max(50),
|
|
3636
|
+
lastName: z13.string().min(2).max(50),
|
|
3637
|
+
title: z13.string().min(2).max(100),
|
|
3638
|
+
email: z13.string().email(),
|
|
3639
|
+
phoneNumber: z13.string().regex(/^\+?[1-9]\d{1,14}$/, "Invalid phone number"),
|
|
3640
|
+
dateOfBirth: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3641
|
+
gender: z13.enum(["male", "female", "other"]),
|
|
3642
|
+
profileImageUrl: z13.string().url().optional(),
|
|
3643
|
+
bio: z13.string().max(1e3).optional(),
|
|
3644
|
+
languages: z13.array(z13.string()).min(1)
|
|
3645
|
+
});
|
|
3646
|
+
var practitionerCertificationSchema = z13.object({
|
|
3647
|
+
level: z13.nativeEnum(CertificationLevel),
|
|
3648
|
+
specialties: z13.array(z13.nativeEnum(CertificationSpecialty)),
|
|
3649
|
+
licenseNumber: z13.string().min(3).max(50),
|
|
3650
|
+
issuingAuthority: z13.string().min(2).max(100),
|
|
3651
|
+
issueDate: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3652
|
+
expiryDate: z13.instanceof(Timestamp7).or(z13.date()).optional(),
|
|
3653
|
+
verificationStatus: z13.enum(["pending", "verified", "rejected"])
|
|
3654
|
+
});
|
|
3655
|
+
var timeSlotSchema = z13.object({
|
|
3656
|
+
start: z13.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
|
|
3657
|
+
end: z13.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
|
|
3658
|
+
}).nullable();
|
|
3659
|
+
var practitionerWorkingHoursSchema = z13.object({
|
|
3660
|
+
practitionerId: z13.string().min(1),
|
|
3661
|
+
clinicId: z13.string().min(1),
|
|
3662
|
+
monday: timeSlotSchema,
|
|
3663
|
+
tuesday: timeSlotSchema,
|
|
3664
|
+
wednesday: timeSlotSchema,
|
|
3665
|
+
thursday: timeSlotSchema,
|
|
3666
|
+
friday: timeSlotSchema,
|
|
3667
|
+
saturday: timeSlotSchema,
|
|
3668
|
+
sunday: timeSlotSchema,
|
|
3669
|
+
createdAt: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3670
|
+
updatedAt: z13.instanceof(Timestamp7).or(z13.date())
|
|
3671
|
+
});
|
|
3672
|
+
var practitionerClinicWorkingHoursSchema = z13.object({
|
|
3673
|
+
clinicId: z13.string().min(1),
|
|
3674
|
+
workingHours: z13.object({
|
|
3675
|
+
monday: timeSlotSchema,
|
|
3676
|
+
tuesday: timeSlotSchema,
|
|
3677
|
+
wednesday: timeSlotSchema,
|
|
3678
|
+
thursday: timeSlotSchema,
|
|
3679
|
+
friday: timeSlotSchema,
|
|
3680
|
+
saturday: timeSlotSchema,
|
|
3681
|
+
sunday: timeSlotSchema
|
|
3682
|
+
}),
|
|
3683
|
+
isActive: z13.boolean(),
|
|
3684
|
+
createdAt: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3685
|
+
updatedAt: z13.instanceof(Timestamp7).or(z13.date())
|
|
3686
|
+
});
|
|
3687
|
+
var practitionerSchema = z13.object({
|
|
3688
|
+
id: z13.string().min(1),
|
|
3689
|
+
userRef: z13.string().min(1),
|
|
3690
|
+
basicInfo: practitionerBasicInfoSchema,
|
|
3691
|
+
certification: practitionerCertificationSchema,
|
|
3692
|
+
clinics: z13.array(z13.string()),
|
|
3693
|
+
clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema),
|
|
3694
|
+
clinicsInfo: z13.array(clinicInfoSchema),
|
|
3695
|
+
procedures: z13.array(z13.string()),
|
|
3696
|
+
proceduresInfo: z13.array(procedureSummaryInfoSchema),
|
|
3697
|
+
reviewInfo: practitionerReviewInfoSchema,
|
|
3698
|
+
isActive: z13.boolean(),
|
|
3699
|
+
isVerified: z13.boolean(),
|
|
3700
|
+
status: z13.nativeEnum(PractitionerStatus),
|
|
3701
|
+
createdAt: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3702
|
+
updatedAt: z13.instanceof(Timestamp7).or(z13.date())
|
|
3703
|
+
});
|
|
3704
|
+
var createPractitionerSchema = z13.object({
|
|
3705
|
+
userRef: z13.string().min(1),
|
|
3706
|
+
basicInfo: practitionerBasicInfoSchema,
|
|
3707
|
+
certification: practitionerCertificationSchema,
|
|
3708
|
+
clinics: z13.array(z13.string()).optional(),
|
|
3709
|
+
clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema).optional(),
|
|
3710
|
+
clinicsInfo: z13.array(clinicInfoSchema).optional(),
|
|
3711
|
+
proceduresInfo: z13.array(procedureSummaryInfoSchema).optional(),
|
|
3712
|
+
isActive: z13.boolean(),
|
|
3713
|
+
isVerified: z13.boolean(),
|
|
3714
|
+
status: z13.nativeEnum(PractitionerStatus).optional()
|
|
3715
|
+
});
|
|
3716
|
+
var createDraftPractitionerSchema = z13.object({
|
|
3717
|
+
basicInfo: practitionerBasicInfoSchema,
|
|
3718
|
+
certification: practitionerCertificationSchema,
|
|
3719
|
+
clinics: z13.array(z13.string()).optional(),
|
|
3720
|
+
clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema).optional(),
|
|
3721
|
+
clinicsInfo: z13.array(clinicInfoSchema).optional(),
|
|
3722
|
+
proceduresInfo: z13.array(procedureSummaryInfoSchema).optional(),
|
|
3723
|
+
isActive: z13.boolean().optional().default(false),
|
|
3724
|
+
isVerified: z13.boolean().optional().default(false)
|
|
3725
|
+
});
|
|
3726
|
+
var practitionerTokenSchema = z13.object({
|
|
3727
|
+
id: z13.string().min(1),
|
|
3728
|
+
token: z13.string().min(6),
|
|
3729
|
+
practitionerId: z13.string().min(1),
|
|
3730
|
+
email: z13.string().email(),
|
|
3731
|
+
clinicId: z13.string().min(1),
|
|
3732
|
+
status: z13.nativeEnum(PractitionerTokenStatus),
|
|
3733
|
+
createdBy: z13.string().min(1),
|
|
3734
|
+
createdAt: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3735
|
+
expiresAt: z13.instanceof(Timestamp7).or(z13.date()),
|
|
3736
|
+
usedBy: z13.string().optional(),
|
|
3737
|
+
usedAt: z13.instanceof(Timestamp7).or(z13.date()).optional()
|
|
3738
|
+
});
|
|
3739
|
+
var createPractitionerTokenSchema = z13.object({
|
|
3740
|
+
practitionerId: z13.string().min(1),
|
|
3741
|
+
email: z13.string().email(),
|
|
3742
|
+
clinicId: z13.string().min(1),
|
|
3743
|
+
expiresAt: z13.date().optional()
|
|
3744
|
+
});
|
|
3745
|
+
var practitionerSignupSchema = z13.object({
|
|
3746
|
+
email: z13.string().email(),
|
|
3747
|
+
password: z13.string().min(8),
|
|
3748
|
+
firstName: z13.string().min(2).max(50),
|
|
3749
|
+
lastName: z13.string().min(2).max(50),
|
|
3750
|
+
token: z13.string().optional(),
|
|
3751
|
+
profileData: z13.object({
|
|
3752
|
+
basicInfo: z13.object({
|
|
3753
|
+
phoneNumber: z13.string().optional(),
|
|
3754
|
+
profileImageUrl: z13.string().optional(),
|
|
3755
|
+
gender: z13.enum(["male", "female", "other"]).optional(),
|
|
3756
|
+
bio: z13.string().optional()
|
|
3757
|
+
}).optional(),
|
|
3758
|
+
certification: z13.any().optional()
|
|
3759
|
+
}).optional()
|
|
3760
|
+
});
|
|
3761
|
+
|
|
3762
|
+
// src/services/practitioner/practitioner.service.ts
|
|
3763
|
+
import { z as z14 } from "zod";
|
|
3742
3764
|
import { distanceBetween } from "geofire-common";
|
|
3743
3765
|
var PractitionerService = class extends BaseService {
|
|
3744
3766
|
constructor(db, auth, app, clinicService) {
|
|
@@ -3807,7 +3829,7 @@ var PractitionerService = class extends BaseService {
|
|
|
3807
3829
|
}
|
|
3808
3830
|
return createdPractitioner;
|
|
3809
3831
|
} catch (error) {
|
|
3810
|
-
if (error instanceof
|
|
3832
|
+
if (error instanceof z14.ZodError) {
|
|
3811
3833
|
throw new Error(`Invalid practitioner data: ${error.message}`);
|
|
3812
3834
|
}
|
|
3813
3835
|
console.error("Error creating practitioner:", error);
|
|
@@ -3829,8 +3851,8 @@ var PractitionerService = class extends BaseService {
|
|
|
3829
3851
|
if (!clinic) {
|
|
3830
3852
|
throw new Error(`Clinic ${clinicId} not found`);
|
|
3831
3853
|
}
|
|
3832
|
-
const
|
|
3833
|
-
if (data.clinics) {
|
|
3854
|
+
const clinicsToAdd = /* @__PURE__ */ new Set([clinicId]);
|
|
3855
|
+
if (data.clinics && data.clinics.length > 0) {
|
|
3834
3856
|
for (const cId of data.clinics) {
|
|
3835
3857
|
if (cId !== clinicId) {
|
|
3836
3858
|
const otherClinic = await this.getClinicService().getClinic(cId);
|
|
@@ -3838,8 +3860,10 @@ var PractitionerService = class extends BaseService {
|
|
|
3838
3860
|
throw new Error(`Clinic ${cId} not found`);
|
|
3839
3861
|
}
|
|
3840
3862
|
}
|
|
3863
|
+
clinicsToAdd.add(cId);
|
|
3841
3864
|
}
|
|
3842
3865
|
}
|
|
3866
|
+
const clinics = Array.from(clinicsToAdd);
|
|
3843
3867
|
const defaultReviewInfo = {
|
|
3844
3868
|
totalReviews: 0,
|
|
3845
3869
|
averageRating: 0,
|
|
@@ -3851,7 +3875,22 @@ var PractitionerService = class extends BaseService {
|
|
|
3851
3875
|
recommendationPercentage: 0
|
|
3852
3876
|
};
|
|
3853
3877
|
const practitionerId = this.generateId();
|
|
3854
|
-
const clinicsInfo =
|
|
3878
|
+
const clinicsInfo = [];
|
|
3879
|
+
for (const cId of clinics) {
|
|
3880
|
+
const clinicData = await this.getClinicService().getClinic(cId);
|
|
3881
|
+
if (clinicData) {
|
|
3882
|
+
clinicsInfo.push({
|
|
3883
|
+
id: clinicData.id,
|
|
3884
|
+
name: clinicData.name,
|
|
3885
|
+
location: clinicData.location,
|
|
3886
|
+
contactInfo: clinicData.contactInfo,
|
|
3887
|
+
// Make sure we're using the right property for featuredPhoto
|
|
3888
|
+
featuredPhoto: clinicData.featuredPhotos && clinicData.featuredPhotos.length > 0 ? clinicData.featuredPhotos[0] : clinicData.coverPhoto || "",
|
|
3889
|
+
description: clinicData.description || null
|
|
3890
|
+
});
|
|
3891
|
+
}
|
|
3892
|
+
}
|
|
3893
|
+
const finalClinicsInfo = validatedData.clinicsInfo && validatedData.clinicsInfo.length > 0 ? validatedData.clinicsInfo : clinicsInfo;
|
|
3855
3894
|
const proceduresInfo = [];
|
|
3856
3895
|
const practitionerData = {
|
|
3857
3896
|
id: practitionerId,
|
|
@@ -3861,7 +3900,7 @@ var PractitionerService = class extends BaseService {
|
|
|
3861
3900
|
certification: validatedData.certification,
|
|
3862
3901
|
clinics,
|
|
3863
3902
|
clinicWorkingHours: validatedData.clinicWorkingHours || [],
|
|
3864
|
-
clinicsInfo,
|
|
3903
|
+
clinicsInfo: finalClinicsInfo,
|
|
3865
3904
|
procedures: [],
|
|
3866
3905
|
proceduresInfo,
|
|
3867
3906
|
reviewInfo: defaultReviewInfo,
|
|
@@ -3903,7 +3942,7 @@ var PractitionerService = class extends BaseService {
|
|
|
3903
3942
|
await setDoc7(doc8(this.db, tokenPath), token);
|
|
3904
3943
|
return { practitioner: savedPractitioner, token };
|
|
3905
3944
|
} catch (error) {
|
|
3906
|
-
if (error instanceof
|
|
3945
|
+
if (error instanceof z14.ZodError) {
|
|
3907
3946
|
throw new Error("Invalid practitioner data: " + error.message);
|
|
3908
3947
|
}
|
|
3909
3948
|
throw error;
|
|
@@ -3956,7 +3995,7 @@ var PractitionerService = class extends BaseService {
|
|
|
3956
3995
|
await setDoc7(doc8(this.db, tokenPath), token);
|
|
3957
3996
|
return token;
|
|
3958
3997
|
} catch (error) {
|
|
3959
|
-
if (error instanceof
|
|
3998
|
+
if (error instanceof z14.ZodError) {
|
|
3960
3999
|
throw new Error("Invalid token data: " + error.message);
|
|
3961
4000
|
}
|
|
3962
4001
|
throw error;
|
|
@@ -4116,7 +4155,7 @@ var PractitionerService = class extends BaseService {
|
|
|
4116
4155
|
}
|
|
4117
4156
|
return updatedPractitioner;
|
|
4118
4157
|
} catch (error) {
|
|
4119
|
-
if (error instanceof
|
|
4158
|
+
if (error instanceof z14.ZodError) {
|
|
4120
4159
|
throw new Error(`Invalid practitioner update data: ${error.message}`);
|
|
4121
4160
|
}
|
|
4122
4161
|
console.error(`Error updating practitioner ${practitionerId}:`, error);
|
|
@@ -4644,7 +4683,7 @@ var UserService = class extends BaseService {
|
|
|
4644
4683
|
});
|
|
4645
4684
|
return this.getUserById(uid);
|
|
4646
4685
|
} catch (error) {
|
|
4647
|
-
if (error instanceof
|
|
4686
|
+
if (error instanceof z15.ZodError) {
|
|
4648
4687
|
throw USER_ERRORS.VALIDATION_ERROR;
|
|
4649
4688
|
}
|
|
4650
4689
|
throw error;
|
|
@@ -4741,7 +4780,7 @@ import {
|
|
|
4741
4780
|
Timestamp as Timestamp10
|
|
4742
4781
|
} from "firebase/firestore";
|
|
4743
4782
|
import { geohashForLocation as geohashForLocation2 } from "geofire-common";
|
|
4744
|
-
import { z as
|
|
4783
|
+
import { z as z16 } from "zod";
|
|
4745
4784
|
|
|
4746
4785
|
// src/services/clinic/utils/photos.utils.ts
|
|
4747
4786
|
import {
|
|
@@ -4945,7 +4984,7 @@ async function createClinicGroup(db, data, ownerId, isDefault = false, clinicAdm
|
|
|
4945
4984
|
});
|
|
4946
4985
|
return groupData;
|
|
4947
4986
|
} catch (error) {
|
|
4948
|
-
if (error instanceof
|
|
4987
|
+
if (error instanceof z16.ZodError) {
|
|
4949
4988
|
console.error(
|
|
4950
4989
|
"[CLINIC_GROUP] Zod validation error:",
|
|
4951
4990
|
JSON.stringify(error.errors, null, 2)
|
|
@@ -5360,7 +5399,7 @@ import {
|
|
|
5360
5399
|
import {
|
|
5361
5400
|
geohashForLocation as geohashForLocation4
|
|
5362
5401
|
} from "geofire-common";
|
|
5363
|
-
import { z as
|
|
5402
|
+
import { z as z18 } from "zod";
|
|
5364
5403
|
|
|
5365
5404
|
// src/services/clinic/utils/clinic.utils.ts
|
|
5366
5405
|
import {
|
|
@@ -5381,7 +5420,7 @@ import {
|
|
|
5381
5420
|
distanceBetween as distanceBetween2,
|
|
5382
5421
|
geohashQueryBounds
|
|
5383
5422
|
} from "geofire-common";
|
|
5384
|
-
import { z as
|
|
5423
|
+
import { z as z17 } from "zod";
|
|
5385
5424
|
async function getClinic(db, clinicId) {
|
|
5386
5425
|
const docRef = doc11(db, CLINICS_COLLECTION, clinicId);
|
|
5387
5426
|
const docSnap = await getDoc14(docRef);
|
|
@@ -6066,7 +6105,7 @@ var ClinicService = class extends BaseService {
|
|
|
6066
6105
|
if (!savedClinic) throw new Error("Failed to retrieve created clinic");
|
|
6067
6106
|
return savedClinic;
|
|
6068
6107
|
} catch (error) {
|
|
6069
|
-
if (error instanceof
|
|
6108
|
+
if (error instanceof z18.ZodError) {
|
|
6070
6109
|
throw new Error("Invalid clinic data: " + error.message);
|
|
6071
6110
|
}
|
|
6072
6111
|
console.error("Error creating clinic:", error);
|
|
@@ -6114,7 +6153,7 @@ var ClinicService = class extends BaseService {
|
|
|
6114
6153
|
if (!updatedClinic) throw new Error("Failed to retrieve updated clinic");
|
|
6115
6154
|
return updatedClinic;
|
|
6116
6155
|
} catch (error) {
|
|
6117
|
-
if (error instanceof
|
|
6156
|
+
if (error instanceof z18.ZodError) {
|
|
6118
6157
|
throw new Error(
|
|
6119
6158
|
"Invalid clinic update data: " + error.errors.map((e) => `${e.path.join(".")} - ${e.message}`).join(", ")
|
|
6120
6159
|
);
|
|
@@ -6573,7 +6612,7 @@ var AuthService = class extends BaseService {
|
|
|
6573
6612
|
clinicAdmin: adminProfile
|
|
6574
6613
|
};
|
|
6575
6614
|
} catch (error) {
|
|
6576
|
-
if (error instanceof
|
|
6615
|
+
if (error instanceof z19.ZodError) {
|
|
6577
6616
|
console.error(
|
|
6578
6617
|
"[AUTH] Zod validation error in signUpClinicAdmin:",
|
|
6579
6618
|
JSON.stringify(error.errors, null, 2)
|
|
@@ -6746,7 +6785,7 @@ var AuthService = class extends BaseService {
|
|
|
6746
6785
|
email
|
|
6747
6786
|
);
|
|
6748
6787
|
} catch (error) {
|
|
6749
|
-
if (error instanceof
|
|
6788
|
+
if (error instanceof z19.ZodError) {
|
|
6750
6789
|
throw AUTH_ERRORS.VALIDATION_ERROR;
|
|
6751
6790
|
}
|
|
6752
6791
|
const firebaseError = error;
|
|
@@ -6869,7 +6908,7 @@ var AuthService = class extends BaseService {
|
|
|
6869
6908
|
await emailSchema.parseAsync(email);
|
|
6870
6909
|
await sendPasswordResetEmail(this.auth, email);
|
|
6871
6910
|
} catch (error) {
|
|
6872
|
-
if (error instanceof
|
|
6911
|
+
if (error instanceof z19.ZodError) {
|
|
6873
6912
|
throw AUTH_ERRORS.VALIDATION_ERROR;
|
|
6874
6913
|
}
|
|
6875
6914
|
const firebaseError = error;
|
|
@@ -6908,7 +6947,7 @@ var AuthService = class extends BaseService {
|
|
|
6908
6947
|
await passwordSchema.parseAsync(newPassword);
|
|
6909
6948
|
await confirmPasswordReset(this.auth, oobCode, newPassword);
|
|
6910
6949
|
} catch (error) {
|
|
6911
|
-
if (error instanceof
|
|
6950
|
+
if (error instanceof z19.ZodError) {
|
|
6912
6951
|
throw AUTH_ERRORS.VALIDATION_ERROR;
|
|
6913
6952
|
}
|
|
6914
6953
|
const firebaseError = error;
|
|
@@ -7077,7 +7116,7 @@ var AuthService = class extends BaseService {
|
|
|
7077
7116
|
practitioner
|
|
7078
7117
|
};
|
|
7079
7118
|
} catch (error) {
|
|
7080
|
-
if (error instanceof
|
|
7119
|
+
if (error instanceof z19.ZodError) {
|
|
7081
7120
|
console.error(
|
|
7082
7121
|
"[AUTH] Zod validation error in signUpPractitioner:",
|
|
7083
7122
|
JSON.stringify(error.errors, null, 2)
|
|
@@ -7369,59 +7408,59 @@ import {
|
|
|
7369
7408
|
var PROCEDURES_COLLECTION = "procedures";
|
|
7370
7409
|
|
|
7371
7410
|
// src/validations/procedure.schema.ts
|
|
7372
|
-
import { z as
|
|
7373
|
-
var createProcedureSchema =
|
|
7374
|
-
name:
|
|
7375
|
-
description:
|
|
7376
|
-
family:
|
|
7377
|
-
categoryId:
|
|
7378
|
-
subcategoryId:
|
|
7379
|
-
technologyId:
|
|
7380
|
-
productId:
|
|
7381
|
-
price:
|
|
7382
|
-
currency:
|
|
7383
|
-
pricingMeasure:
|
|
7384
|
-
duration:
|
|
7411
|
+
import { z as z20 } from "zod";
|
|
7412
|
+
var createProcedureSchema = z20.object({
|
|
7413
|
+
name: z20.string().min(1).max(200),
|
|
7414
|
+
description: z20.string().min(1).max(2e3),
|
|
7415
|
+
family: z20.nativeEnum(ProcedureFamily),
|
|
7416
|
+
categoryId: z20.string().min(1),
|
|
7417
|
+
subcategoryId: z20.string().min(1),
|
|
7418
|
+
technologyId: z20.string().min(1),
|
|
7419
|
+
productId: z20.string().min(1),
|
|
7420
|
+
price: z20.number().min(0),
|
|
7421
|
+
currency: z20.nativeEnum(Currency),
|
|
7422
|
+
pricingMeasure: z20.nativeEnum(PricingMeasure),
|
|
7423
|
+
duration: z20.number().min(1).max(480),
|
|
7385
7424
|
// Max 8 hours
|
|
7386
|
-
practitionerId:
|
|
7387
|
-
clinicBranchId:
|
|
7425
|
+
practitionerId: z20.string().min(1),
|
|
7426
|
+
clinicBranchId: z20.string().min(1)
|
|
7388
7427
|
});
|
|
7389
|
-
var updateProcedureSchema =
|
|
7390
|
-
name:
|
|
7391
|
-
description:
|
|
7392
|
-
price:
|
|
7393
|
-
currency:
|
|
7394
|
-
pricingMeasure:
|
|
7395
|
-
duration:
|
|
7396
|
-
isActive:
|
|
7397
|
-
practitionerId:
|
|
7398
|
-
categoryId:
|
|
7399
|
-
subcategoryId:
|
|
7400
|
-
technologyId:
|
|
7401
|
-
productId:
|
|
7402
|
-
clinicBranchId:
|
|
7428
|
+
var updateProcedureSchema = z20.object({
|
|
7429
|
+
name: z20.string().min(3).max(100).optional(),
|
|
7430
|
+
description: z20.string().min(3).max(1e3).optional(),
|
|
7431
|
+
price: z20.number().min(0).optional(),
|
|
7432
|
+
currency: z20.nativeEnum(Currency).optional(),
|
|
7433
|
+
pricingMeasure: z20.nativeEnum(PricingMeasure).optional(),
|
|
7434
|
+
duration: z20.number().min(0).optional(),
|
|
7435
|
+
isActive: z20.boolean().optional(),
|
|
7436
|
+
practitionerId: z20.string().optional(),
|
|
7437
|
+
categoryId: z20.string().optional(),
|
|
7438
|
+
subcategoryId: z20.string().optional(),
|
|
7439
|
+
technologyId: z20.string().optional(),
|
|
7440
|
+
productId: z20.string().optional(),
|
|
7441
|
+
clinicBranchId: z20.string().optional()
|
|
7403
7442
|
});
|
|
7404
7443
|
var procedureSchema = createProcedureSchema.extend({
|
|
7405
|
-
id:
|
|
7406
|
-
category:
|
|
7444
|
+
id: z20.string().min(1),
|
|
7445
|
+
category: z20.any(),
|
|
7407
7446
|
// We'll validate the full category object separately
|
|
7408
|
-
subcategory:
|
|
7447
|
+
subcategory: z20.any(),
|
|
7409
7448
|
// We'll validate the full subcategory object separately
|
|
7410
|
-
technology:
|
|
7449
|
+
technology: z20.any(),
|
|
7411
7450
|
// We'll validate the full technology object separately
|
|
7412
|
-
product:
|
|
7451
|
+
product: z20.any(),
|
|
7413
7452
|
// We'll validate the full product object separately
|
|
7414
|
-
blockingConditions:
|
|
7453
|
+
blockingConditions: z20.array(z20.any()),
|
|
7415
7454
|
// We'll validate blocking conditions separately
|
|
7416
|
-
treatmentBenefits:
|
|
7455
|
+
treatmentBenefits: z20.array(z20.any()),
|
|
7417
7456
|
// We'll validate treatment benefits separately
|
|
7418
|
-
preRequirements:
|
|
7457
|
+
preRequirements: z20.array(z20.any()),
|
|
7419
7458
|
// We'll validate requirements separately
|
|
7420
|
-
postRequirements:
|
|
7459
|
+
postRequirements: z20.array(z20.any()),
|
|
7421
7460
|
// We'll validate requirements separately
|
|
7422
|
-
certificationRequirement:
|
|
7461
|
+
certificationRequirement: z20.any(),
|
|
7423
7462
|
// We'll validate certification requirement separately
|
|
7424
|
-
documentationTemplates:
|
|
7463
|
+
documentationTemplates: z20.array(z20.any()),
|
|
7425
7464
|
// We'll validate documentation templates separately
|
|
7426
7465
|
clinicInfo: clinicInfoSchema,
|
|
7427
7466
|
// Clinic info validation
|
|
@@ -7429,9 +7468,9 @@ var procedureSchema = createProcedureSchema.extend({
|
|
|
7429
7468
|
// Doctor info validation
|
|
7430
7469
|
reviewInfo: procedureReviewInfoSchema,
|
|
7431
7470
|
// Procedure review info validation
|
|
7432
|
-
isActive:
|
|
7433
|
-
createdAt:
|
|
7434
|
-
updatedAt:
|
|
7471
|
+
isActive: z20.boolean(),
|
|
7472
|
+
createdAt: z20.date(),
|
|
7473
|
+
updatedAt: z20.date()
|
|
7435
7474
|
});
|
|
7436
7475
|
|
|
7437
7476
|
// src/services/procedure/procedure.service.ts
|
|
@@ -8500,42 +8539,42 @@ import {
|
|
|
8500
8539
|
} from "firebase/firestore";
|
|
8501
8540
|
|
|
8502
8541
|
// src/validations/calendar.schema.ts
|
|
8503
|
-
import { z as
|
|
8542
|
+
import { z as z22 } from "zod";
|
|
8504
8543
|
import { Timestamp as Timestamp18 } from "firebase/firestore";
|
|
8505
8544
|
|
|
8506
8545
|
// src/validations/profile-info.schema.ts
|
|
8507
|
-
import { z as
|
|
8546
|
+
import { z as z21 } from "zod";
|
|
8508
8547
|
import { Timestamp as Timestamp17 } from "firebase/firestore";
|
|
8509
|
-
var clinicInfoSchema2 =
|
|
8510
|
-
id:
|
|
8511
|
-
featuredPhoto:
|
|
8512
|
-
name:
|
|
8513
|
-
description:
|
|
8548
|
+
var clinicInfoSchema2 = z21.object({
|
|
8549
|
+
id: z21.string(),
|
|
8550
|
+
featuredPhoto: z21.string(),
|
|
8551
|
+
name: z21.string(),
|
|
8552
|
+
description: z21.string(),
|
|
8514
8553
|
location: clinicLocationSchema,
|
|
8515
8554
|
contactInfo: clinicContactInfoSchema
|
|
8516
8555
|
});
|
|
8517
|
-
var practitionerProfileInfoSchema =
|
|
8518
|
-
id:
|
|
8519
|
-
practitionerPhoto:
|
|
8520
|
-
name:
|
|
8521
|
-
email:
|
|
8522
|
-
phone:
|
|
8556
|
+
var practitionerProfileInfoSchema = z21.object({
|
|
8557
|
+
id: z21.string(),
|
|
8558
|
+
practitionerPhoto: z21.string().nullable(),
|
|
8559
|
+
name: z21.string(),
|
|
8560
|
+
email: z21.string().email(),
|
|
8561
|
+
phone: z21.string().nullable(),
|
|
8523
8562
|
certification: practitionerCertificationSchema
|
|
8524
8563
|
});
|
|
8525
|
-
var patientProfileInfoSchema =
|
|
8526
|
-
id:
|
|
8527
|
-
fullName:
|
|
8528
|
-
email:
|
|
8529
|
-
phone:
|
|
8530
|
-
dateOfBirth:
|
|
8531
|
-
gender:
|
|
8564
|
+
var patientProfileInfoSchema = z21.object({
|
|
8565
|
+
id: z21.string(),
|
|
8566
|
+
fullName: z21.string(),
|
|
8567
|
+
email: z21.string().email(),
|
|
8568
|
+
phone: z21.string().nullable(),
|
|
8569
|
+
dateOfBirth: z21.instanceof(Timestamp17),
|
|
8570
|
+
gender: z21.nativeEnum(Gender)
|
|
8532
8571
|
});
|
|
8533
8572
|
|
|
8534
8573
|
// src/validations/calendar.schema.ts
|
|
8535
8574
|
var MIN_APPOINTMENT_DURATION = 15;
|
|
8536
|
-
var calendarEventTimeSchema =
|
|
8537
|
-
start:
|
|
8538
|
-
end:
|
|
8575
|
+
var calendarEventTimeSchema = z22.object({
|
|
8576
|
+
start: z22.instanceof(Date).or(z22.instanceof(Timestamp18)),
|
|
8577
|
+
end: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
|
|
8539
8578
|
}).refine(
|
|
8540
8579
|
(data) => {
|
|
8541
8580
|
const startDate = data.start instanceof Timestamp18 ? data.start.toDate() : data.start;
|
|
@@ -8556,46 +8595,46 @@ var calendarEventTimeSchema = z21.object({
|
|
|
8556
8595
|
path: ["start"]
|
|
8557
8596
|
}
|
|
8558
8597
|
);
|
|
8559
|
-
var timeSlotSchema2 =
|
|
8560
|
-
start:
|
|
8561
|
-
end:
|
|
8562
|
-
isAvailable:
|
|
8598
|
+
var timeSlotSchema2 = z22.object({
|
|
8599
|
+
start: z22.date(),
|
|
8600
|
+
end: z22.date(),
|
|
8601
|
+
isAvailable: z22.boolean()
|
|
8563
8602
|
}).refine((data) => data.start < data.end, {
|
|
8564
8603
|
message: "End time must be after start time",
|
|
8565
8604
|
path: ["end"]
|
|
8566
8605
|
});
|
|
8567
|
-
var syncedCalendarEventSchema =
|
|
8568
|
-
eventId:
|
|
8569
|
-
syncedCalendarProvider:
|
|
8570
|
-
syncedAt:
|
|
8606
|
+
var syncedCalendarEventSchema = z22.object({
|
|
8607
|
+
eventId: z22.string(),
|
|
8608
|
+
syncedCalendarProvider: z22.nativeEnum(SyncedCalendarProvider),
|
|
8609
|
+
syncedAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
|
|
8571
8610
|
});
|
|
8572
|
-
var procedureInfoSchema =
|
|
8573
|
-
name:
|
|
8574
|
-
description:
|
|
8575
|
-
duration:
|
|
8576
|
-
price:
|
|
8577
|
-
currency:
|
|
8611
|
+
var procedureInfoSchema = z22.object({
|
|
8612
|
+
name: z22.string(),
|
|
8613
|
+
description: z22.string(),
|
|
8614
|
+
duration: z22.number().min(MIN_APPOINTMENT_DURATION),
|
|
8615
|
+
price: z22.number().min(0),
|
|
8616
|
+
currency: z22.nativeEnum(Currency)
|
|
8578
8617
|
});
|
|
8579
|
-
var procedureCategorizationSchema =
|
|
8580
|
-
procedureFamily:
|
|
8618
|
+
var procedureCategorizationSchema = z22.object({
|
|
8619
|
+
procedureFamily: z22.string(),
|
|
8581
8620
|
// Replace with proper enum when available
|
|
8582
|
-
procedureCategory:
|
|
8621
|
+
procedureCategory: z22.string(),
|
|
8583
8622
|
// Replace with proper enum when available
|
|
8584
|
-
procedureSubcategory:
|
|
8623
|
+
procedureSubcategory: z22.string(),
|
|
8585
8624
|
// Replace with proper enum when available
|
|
8586
|
-
procedureTechnology:
|
|
8625
|
+
procedureTechnology: z22.string(),
|
|
8587
8626
|
// Replace with proper enum when available
|
|
8588
|
-
procedureProduct:
|
|
8627
|
+
procedureProduct: z22.string()
|
|
8589
8628
|
// Replace with proper enum when available
|
|
8590
8629
|
});
|
|
8591
|
-
var createAppointmentSchema2 =
|
|
8592
|
-
clinicId:
|
|
8593
|
-
doctorId:
|
|
8594
|
-
patientId:
|
|
8595
|
-
procedureId:
|
|
8630
|
+
var createAppointmentSchema2 = z22.object({
|
|
8631
|
+
clinicId: z22.string().min(1, "Clinic ID is required"),
|
|
8632
|
+
doctorId: z22.string().min(1, "Doctor ID is required"),
|
|
8633
|
+
patientId: z22.string().min(1, "Patient ID is required"),
|
|
8634
|
+
procedureId: z22.string().min(1, "Procedure ID is required"),
|
|
8596
8635
|
eventLocation: clinicLocationSchema,
|
|
8597
8636
|
eventTime: calendarEventTimeSchema,
|
|
8598
|
-
description:
|
|
8637
|
+
description: z22.string().optional()
|
|
8599
8638
|
}).refine(
|
|
8600
8639
|
(data) => {
|
|
8601
8640
|
return true;
|
|
@@ -8604,73 +8643,73 @@ var createAppointmentSchema2 = z21.object({
|
|
|
8604
8643
|
message: "Invalid appointment parameters"
|
|
8605
8644
|
}
|
|
8606
8645
|
);
|
|
8607
|
-
var updateAppointmentSchema2 =
|
|
8608
|
-
appointmentId:
|
|
8609
|
-
clinicId:
|
|
8610
|
-
doctorId:
|
|
8611
|
-
patientId:
|
|
8646
|
+
var updateAppointmentSchema2 = z22.object({
|
|
8647
|
+
appointmentId: z22.string().min(1, "Appointment ID is required"),
|
|
8648
|
+
clinicId: z22.string().min(1, "Clinic ID is required"),
|
|
8649
|
+
doctorId: z22.string().min(1, "Doctor ID is required"),
|
|
8650
|
+
patientId: z22.string().min(1, "Patient ID is required"),
|
|
8612
8651
|
eventTime: calendarEventTimeSchema.optional(),
|
|
8613
|
-
description:
|
|
8614
|
-
status:
|
|
8652
|
+
description: z22.string().optional(),
|
|
8653
|
+
status: z22.nativeEnum(CalendarEventStatus).optional()
|
|
8615
8654
|
});
|
|
8616
|
-
var createCalendarEventSchema =
|
|
8617
|
-
id:
|
|
8618
|
-
clinicBranchId:
|
|
8619
|
-
clinicBranchInfo:
|
|
8620
|
-
practitionerProfileId:
|
|
8655
|
+
var createCalendarEventSchema = z22.object({
|
|
8656
|
+
id: z22.string(),
|
|
8657
|
+
clinicBranchId: z22.string().nullable().optional(),
|
|
8658
|
+
clinicBranchInfo: z22.any().nullable().optional(),
|
|
8659
|
+
practitionerProfileId: z22.string().nullable().optional(),
|
|
8621
8660
|
practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
|
|
8622
|
-
patientProfileId:
|
|
8661
|
+
patientProfileId: z22.string().nullable().optional(),
|
|
8623
8662
|
patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
|
|
8624
|
-
procedureId:
|
|
8625
|
-
appointmentId:
|
|
8626
|
-
syncedCalendarEventId:
|
|
8627
|
-
eventName:
|
|
8663
|
+
procedureId: z22.string().nullable().optional(),
|
|
8664
|
+
appointmentId: z22.string().nullable().optional(),
|
|
8665
|
+
syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
|
|
8666
|
+
eventName: z22.string().min(1, "Event name is required"),
|
|
8628
8667
|
eventLocation: clinicLocationSchema.optional(),
|
|
8629
8668
|
eventTime: calendarEventTimeSchema,
|
|
8630
|
-
description:
|
|
8631
|
-
status:
|
|
8632
|
-
syncStatus:
|
|
8633
|
-
eventType:
|
|
8634
|
-
createdAt:
|
|
8669
|
+
description: z22.string().optional(),
|
|
8670
|
+
status: z22.nativeEnum(CalendarEventStatus),
|
|
8671
|
+
syncStatus: z22.nativeEnum(CalendarSyncStatus),
|
|
8672
|
+
eventType: z22.nativeEnum(CalendarEventType),
|
|
8673
|
+
createdAt: z22.any(),
|
|
8635
8674
|
// FieldValue for server timestamp
|
|
8636
|
-
updatedAt:
|
|
8675
|
+
updatedAt: z22.any()
|
|
8637
8676
|
// FieldValue for server timestamp
|
|
8638
8677
|
});
|
|
8639
|
-
var updateCalendarEventSchema =
|
|
8640
|
-
syncedCalendarEventId:
|
|
8641
|
-
appointmentId:
|
|
8642
|
-
eventName:
|
|
8678
|
+
var updateCalendarEventSchema = z22.object({
|
|
8679
|
+
syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
|
|
8680
|
+
appointmentId: z22.string().nullable().optional(),
|
|
8681
|
+
eventName: z22.string().optional(),
|
|
8643
8682
|
eventTime: calendarEventTimeSchema.optional(),
|
|
8644
|
-
description:
|
|
8645
|
-
status:
|
|
8646
|
-
syncStatus:
|
|
8647
|
-
eventType:
|
|
8648
|
-
updatedAt:
|
|
8683
|
+
description: z22.string().optional(),
|
|
8684
|
+
status: z22.nativeEnum(CalendarEventStatus).optional(),
|
|
8685
|
+
syncStatus: z22.nativeEnum(CalendarSyncStatus).optional(),
|
|
8686
|
+
eventType: z22.nativeEnum(CalendarEventType).optional(),
|
|
8687
|
+
updatedAt: z22.any()
|
|
8649
8688
|
// FieldValue for server timestamp
|
|
8650
8689
|
});
|
|
8651
|
-
var calendarEventSchema =
|
|
8652
|
-
id:
|
|
8653
|
-
clinicBranchId:
|
|
8654
|
-
clinicBranchInfo:
|
|
8690
|
+
var calendarEventSchema = z22.object({
|
|
8691
|
+
id: z22.string(),
|
|
8692
|
+
clinicBranchId: z22.string().nullable().optional(),
|
|
8693
|
+
clinicBranchInfo: z22.any().nullable().optional(),
|
|
8655
8694
|
// Will be replaced with proper clinic info schema
|
|
8656
|
-
practitionerProfileId:
|
|
8695
|
+
practitionerProfileId: z22.string().nullable().optional(),
|
|
8657
8696
|
practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
|
|
8658
|
-
patientProfileId:
|
|
8697
|
+
patientProfileId: z22.string().nullable().optional(),
|
|
8659
8698
|
patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
|
|
8660
|
-
procedureId:
|
|
8699
|
+
procedureId: z22.string().nullable().optional(),
|
|
8661
8700
|
procedureInfo: procedureInfoSchema.nullable().optional(),
|
|
8662
8701
|
procedureCategorization: procedureCategorizationSchema.nullable().optional(),
|
|
8663
|
-
appointmentId:
|
|
8664
|
-
syncedCalendarEventId:
|
|
8665
|
-
eventName:
|
|
8702
|
+
appointmentId: z22.string().nullable().optional(),
|
|
8703
|
+
syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
|
|
8704
|
+
eventName: z22.string(),
|
|
8666
8705
|
eventLocation: clinicLocationSchema.optional(),
|
|
8667
8706
|
eventTime: calendarEventTimeSchema,
|
|
8668
|
-
description:
|
|
8669
|
-
status:
|
|
8670
|
-
syncStatus:
|
|
8671
|
-
eventType:
|
|
8672
|
-
createdAt:
|
|
8673
|
-
updatedAt:
|
|
8707
|
+
description: z22.string().optional(),
|
|
8708
|
+
status: z22.nativeEnum(CalendarEventStatus),
|
|
8709
|
+
syncStatus: z22.nativeEnum(CalendarSyncStatus),
|
|
8710
|
+
eventType: z22.nativeEnum(CalendarEventType),
|
|
8711
|
+
createdAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18)),
|
|
8712
|
+
updatedAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
|
|
8674
8713
|
});
|
|
8675
8714
|
|
|
8676
8715
|
// src/services/calendar/utils/clinic.utils.ts
|
|
@@ -11281,7 +11320,7 @@ import {
|
|
|
11281
11320
|
var REVIEWS_COLLECTION = "reviews";
|
|
11282
11321
|
|
|
11283
11322
|
// src/services/reviews/reviews.service.ts
|
|
11284
|
-
import { z as
|
|
11323
|
+
import { z as z23 } from "zod";
|
|
11285
11324
|
var ReviewService = class extends BaseService {
|
|
11286
11325
|
constructor(db, auth, app) {
|
|
11287
11326
|
super(db, auth, app);
|
|
@@ -11387,7 +11426,7 @@ var ReviewService = class extends BaseService {
|
|
|
11387
11426
|
await Promise.all(updatePromises);
|
|
11388
11427
|
return review;
|
|
11389
11428
|
} catch (error) {
|
|
11390
|
-
if (error instanceof
|
|
11429
|
+
if (error instanceof z23.ZodError) {
|
|
11391
11430
|
throw new Error(`Invalid review data: ${error.message}`);
|
|
11392
11431
|
}
|
|
11393
11432
|
throw error;
|
|
@@ -13713,54 +13752,54 @@ var ProductService = class extends BaseService {
|
|
|
13713
13752
|
};
|
|
13714
13753
|
|
|
13715
13754
|
// src/validations/notification.schema.ts
|
|
13716
|
-
import { z as
|
|
13717
|
-
var baseNotificationSchema =
|
|
13718
|
-
id:
|
|
13719
|
-
userId:
|
|
13720
|
-
notificationTime:
|
|
13755
|
+
import { z as z24 } from "zod";
|
|
13756
|
+
var baseNotificationSchema = z24.object({
|
|
13757
|
+
id: z24.string().optional(),
|
|
13758
|
+
userId: z24.string(),
|
|
13759
|
+
notificationTime: z24.any(),
|
|
13721
13760
|
// Timestamp
|
|
13722
|
-
notificationType:
|
|
13723
|
-
notificationTokens:
|
|
13724
|
-
status:
|
|
13725
|
-
createdAt:
|
|
13761
|
+
notificationType: z24.nativeEnum(NotificationType),
|
|
13762
|
+
notificationTokens: z24.array(z24.string()),
|
|
13763
|
+
status: z24.nativeEnum(NotificationStatus),
|
|
13764
|
+
createdAt: z24.any().optional(),
|
|
13726
13765
|
// Timestamp
|
|
13727
|
-
updatedAt:
|
|
13766
|
+
updatedAt: z24.any().optional(),
|
|
13728
13767
|
// Timestamp
|
|
13729
|
-
title:
|
|
13730
|
-
body:
|
|
13731
|
-
isRead:
|
|
13732
|
-
userRole:
|
|
13768
|
+
title: z24.string(),
|
|
13769
|
+
body: z24.string(),
|
|
13770
|
+
isRead: z24.boolean(),
|
|
13771
|
+
userRole: z24.nativeEnum(UserRole)
|
|
13733
13772
|
});
|
|
13734
13773
|
var preRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
13735
|
-
notificationType:
|
|
13736
|
-
treatmentId:
|
|
13737
|
-
requirements:
|
|
13738
|
-
deadline:
|
|
13774
|
+
notificationType: z24.literal("preRequirement" /* PRE_REQUIREMENT */),
|
|
13775
|
+
treatmentId: z24.string(),
|
|
13776
|
+
requirements: z24.array(z24.string()),
|
|
13777
|
+
deadline: z24.any()
|
|
13739
13778
|
// Timestamp
|
|
13740
13779
|
});
|
|
13741
13780
|
var postRequirementNotificationSchema = baseNotificationSchema.extend({
|
|
13742
|
-
notificationType:
|
|
13743
|
-
treatmentId:
|
|
13744
|
-
requirements:
|
|
13745
|
-
deadline:
|
|
13781
|
+
notificationType: z24.literal("postRequirement" /* POST_REQUIREMENT */),
|
|
13782
|
+
treatmentId: z24.string(),
|
|
13783
|
+
requirements: z24.array(z24.string()),
|
|
13784
|
+
deadline: z24.any()
|
|
13746
13785
|
// Timestamp
|
|
13747
13786
|
});
|
|
13748
13787
|
var appointmentReminderNotificationSchema = baseNotificationSchema.extend({
|
|
13749
|
-
notificationType:
|
|
13750
|
-
appointmentId:
|
|
13751
|
-
appointmentTime:
|
|
13788
|
+
notificationType: z24.literal("appointmentReminder" /* APPOINTMENT_REMINDER */),
|
|
13789
|
+
appointmentId: z24.string(),
|
|
13790
|
+
appointmentTime: z24.any(),
|
|
13752
13791
|
// Timestamp
|
|
13753
|
-
treatmentType:
|
|
13754
|
-
doctorName:
|
|
13792
|
+
treatmentType: z24.string(),
|
|
13793
|
+
doctorName: z24.string()
|
|
13755
13794
|
});
|
|
13756
13795
|
var appointmentNotificationSchema = baseNotificationSchema.extend({
|
|
13757
|
-
notificationType:
|
|
13758
|
-
appointmentId:
|
|
13759
|
-
appointmentStatus:
|
|
13760
|
-
previousStatus:
|
|
13761
|
-
reason:
|
|
13796
|
+
notificationType: z24.literal("appointmentNotification" /* APPOINTMENT_NOTIFICATION */),
|
|
13797
|
+
appointmentId: z24.string(),
|
|
13798
|
+
appointmentStatus: z24.string(),
|
|
13799
|
+
previousStatus: z24.string(),
|
|
13800
|
+
reason: z24.string().optional()
|
|
13762
13801
|
});
|
|
13763
|
-
var notificationSchema =
|
|
13802
|
+
var notificationSchema = z24.discriminatedUnion("notificationType", [
|
|
13764
13803
|
preRequirementNotificationSchema,
|
|
13765
13804
|
postRequirementNotificationSchema,
|
|
13766
13805
|
appointmentReminderNotificationSchema,
|
|
@@ -13900,7 +13939,6 @@ export {
|
|
|
13900
13939
|
clinicContactInfoSchema,
|
|
13901
13940
|
clinicGroupSchema,
|
|
13902
13941
|
clinicGroupSetupSchema,
|
|
13903
|
-
clinicInfoSchema,
|
|
13904
13942
|
clinicLocationSchema,
|
|
13905
13943
|
clinicReviewInfoSchema,
|
|
13906
13944
|
clinicReviewSchema,
|
|
@@ -13928,7 +13966,6 @@ export {
|
|
|
13928
13966
|
createProcedureReviewSchema,
|
|
13929
13967
|
createReviewSchema,
|
|
13930
13968
|
createUserOptionsSchema,
|
|
13931
|
-
doctorInfoSchema,
|
|
13932
13969
|
documentElementSchema,
|
|
13933
13970
|
documentElementWithoutIdSchema,
|
|
13934
13971
|
documentTemplateSchema,
|
|
@@ -13967,7 +14004,6 @@ export {
|
|
|
13967
14004
|
procedureInfoSchema,
|
|
13968
14005
|
procedureReviewInfoSchema,
|
|
13969
14006
|
procedureReviewSchema,
|
|
13970
|
-
procedureSummaryInfoSchema,
|
|
13971
14007
|
requesterInfoSchema,
|
|
13972
14008
|
reviewSchema,
|
|
13973
14009
|
searchAppointmentsSchema,
|