@blackcode_sa/metaestetics-api 1.11.1 → 1.11.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/admin/index.d.mts +324 -330
- package/dist/admin/index.d.ts +324 -330
- package/dist/backoffice/index.d.mts +67 -283
- package/dist/backoffice/index.d.ts +67 -283
- package/dist/backoffice/index.js +6 -114
- package/dist/backoffice/index.mjs +6 -112
- package/dist/index.d.mts +3037 -3100
- package/dist/index.d.ts +3037 -3100
- package/dist/index.js +129 -379
- package/dist/index.mjs +130 -379
- package/package.json +1 -1
- package/src/backoffice/expo-safe/index.ts +0 -2
- package/src/backoffice/services/__tests__/brand.service.test.ts +196 -0
- package/src/backoffice/services/__tests__/category.service.test.ts +201 -0
- package/src/backoffice/services/__tests__/product.service.test.ts +358 -0
- package/src/backoffice/services/__tests__/requirement.service.test.ts +226 -0
- package/src/backoffice/services/__tests__/subcategory.service.test.ts +181 -0
- package/src/backoffice/services/__tests__/technology.service.test.ts +1097 -0
- package/src/backoffice/services/technology.service.ts +10 -122
- package/src/backoffice/types/index.ts +0 -1
- package/src/backoffice/types/product.types.ts +1 -3
- package/src/backoffice/types/technology.types.ts +4 -4
- package/src/backoffice/validations/schemas.ts +9 -35
- package/src/services/appointment/appointment.service.ts +5 -0
- package/src/services/appointment/utils/appointment.utils.ts +113 -124
- package/src/services/procedure/procedure.service.ts +234 -434
- package/src/types/appointment/index.ts +37 -43
- package/src/types/clinic/index.ts +6 -1
- package/src/types/patient/medical-info.types.ts +3 -3
- package/src/types/procedure/index.ts +17 -20
- package/src/validations/appointment.schema.ts +118 -170
- package/src/validations/clinic.schema.ts +6 -1
- package/src/validations/patient/medical-info.schema.ts +2 -7
- package/src/backoffice/services/README.md +0 -40
- package/src/backoffice/services/constants.service.ts +0 -268
- package/src/backoffice/types/admin-constants.types.ts +0 -69
|
@@ -1,58 +1,49 @@
|
|
|
1
|
-
import { Timestamp, FieldValue } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from "../../backoffice/types/static/pricing.types";
|
|
12
|
-
import { BlockingCondition } from "../../backoffice/types/static/blocking-condition.types";
|
|
13
|
-
import { Requirement } from "../../backoffice/types/requirement.types";
|
|
14
|
-
import { FilledDocumentStatus } from "../documentation-templates";
|
|
15
|
-
import type {
|
|
16
|
-
ContraindicationDynamic,
|
|
17
|
-
ProcedureFamily,
|
|
18
|
-
} from "../../backoffice";
|
|
19
|
-
import type { MediaResource } from "../../services/media/media.service";
|
|
1
|
+
import { Timestamp, FieldValue } from 'firebase/firestore';
|
|
2
|
+
import { ClinicInfo, PractitionerProfileInfo, PatientProfileInfo } from '../profile';
|
|
3
|
+
import { ProcedureSummaryInfo } from '../procedure';
|
|
4
|
+
import { Currency, type PricingMeasure } from '../../backoffice/types/static/pricing.types';
|
|
5
|
+
import { BlockingCondition } from '../../backoffice/types/static/blocking-condition.types';
|
|
6
|
+
import { Contraindication } from '../../backoffice/types/static/contraindication.types';
|
|
7
|
+
import { Requirement } from '../../backoffice/types/requirement.types';
|
|
8
|
+
import { FilledDocumentStatus } from '../documentation-templates';
|
|
9
|
+
import type { ProcedureFamily } from '../../backoffice';
|
|
10
|
+
import type { MediaResource } from '../../services/media/media.service';
|
|
20
11
|
|
|
21
12
|
/**
|
|
22
13
|
* Enum defining the possible statuses of an appointment.
|
|
23
14
|
*/
|
|
24
15
|
export enum AppointmentStatus {
|
|
25
|
-
PENDING =
|
|
26
|
-
CONFIRMED =
|
|
27
|
-
CHECKED_IN =
|
|
28
|
-
IN_PROGRESS =
|
|
29
|
-
COMPLETED =
|
|
30
|
-
CANCELED_PATIENT =
|
|
31
|
-
CANCELED_PATIENT_RESCHEDULED =
|
|
32
|
-
CANCELED_CLINIC =
|
|
33
|
-
NO_SHOW =
|
|
34
|
-
RESCHEDULED_BY_CLINIC =
|
|
16
|
+
PENDING = 'pending', // Initial state after booking, before confirmation (if applicable)
|
|
17
|
+
CONFIRMED = 'confirmed', // Confirmed by clinic/practitioner
|
|
18
|
+
CHECKED_IN = 'checked_in', // Patient has arrived
|
|
19
|
+
IN_PROGRESS = 'in_progress', // Procedure has started
|
|
20
|
+
COMPLETED = 'completed', // Procedure finished successfully
|
|
21
|
+
CANCELED_PATIENT = 'canceled_patient', // Canceled by the patient
|
|
22
|
+
CANCELED_PATIENT_RESCHEDULED = 'canceled_patient_rescheduled', // Canceled by the patient and rescheduled by the clinic
|
|
23
|
+
CANCELED_CLINIC = 'canceled_clinic', // Canceled by the clinic/practitioner
|
|
24
|
+
NO_SHOW = 'no_show', // Patient did not attend
|
|
25
|
+
RESCHEDULED_BY_CLINIC = 'rescheduled_by_clinic', // When appointment is rescheduled by the clinic, waiting for patient confirmation or cancellation (when reschedule is accepted, status goes to confirmed, if not accepted, then status goes to canceled_patient_rescheduled)
|
|
35
26
|
}
|
|
36
27
|
|
|
37
28
|
/**
|
|
38
29
|
* Enum defining the payment status of an appointment.
|
|
39
30
|
*/
|
|
40
31
|
export enum PaymentStatus {
|
|
41
|
-
UNPAID =
|
|
42
|
-
PAID =
|
|
43
|
-
PARTIALLY_PAID =
|
|
44
|
-
REFUNDED =
|
|
45
|
-
NOT_APPLICABLE =
|
|
32
|
+
UNPAID = 'unpaid',
|
|
33
|
+
PAID = 'paid',
|
|
34
|
+
PARTIALLY_PAID = 'partially_paid',
|
|
35
|
+
REFUNDED = 'refunded',
|
|
36
|
+
NOT_APPLICABLE = 'not_applicable', // For free services or other scenarios
|
|
46
37
|
}
|
|
47
38
|
|
|
48
39
|
/**
|
|
49
40
|
* Enum for different types of media that can be attached to an appointment.
|
|
50
41
|
*/
|
|
51
42
|
export enum MediaType {
|
|
52
|
-
BEFORE_PHOTO =
|
|
53
|
-
AFTER_PHOTO =
|
|
54
|
-
CONSENT_SCAN =
|
|
55
|
-
OTHER_DOCUMENT =
|
|
43
|
+
BEFORE_PHOTO = 'before_photo',
|
|
44
|
+
AFTER_PHOTO = 'after_photo',
|
|
45
|
+
CONSENT_SCAN = 'consent_scan',
|
|
46
|
+
OTHER_DOCUMENT = 'other_document',
|
|
56
47
|
}
|
|
57
48
|
|
|
58
49
|
/**
|
|
@@ -126,7 +117,8 @@ export interface BeforeAfterPerZone {
|
|
|
126
117
|
/** URL for after photo or null if not available */
|
|
127
118
|
after: MediaResource | null;
|
|
128
119
|
/** Optional note for the zone */
|
|
129
|
-
|
|
120
|
+
afterNote?: string | null;
|
|
121
|
+
beforeNote?: string | null;
|
|
130
122
|
}
|
|
131
123
|
|
|
132
124
|
/**
|
|
@@ -149,6 +141,8 @@ export interface BillingPerZone {
|
|
|
149
141
|
Subtotal: number;
|
|
150
142
|
/** Optional billing note */
|
|
151
143
|
Note: string | null;
|
|
144
|
+
/** Ion/Batch number for traceability */
|
|
145
|
+
IonNumber: string | null;
|
|
152
146
|
}
|
|
153
147
|
|
|
154
148
|
/**
|
|
@@ -233,7 +227,7 @@ export interface Appointment {
|
|
|
233
227
|
|
|
234
228
|
/** Cancellation Details */
|
|
235
229
|
cancellationReason?: string | null;
|
|
236
|
-
canceledBy?:
|
|
230
|
+
canceledBy?: 'patient' | 'clinic' | 'practitioner' | 'system';
|
|
237
231
|
|
|
238
232
|
/** Notes */
|
|
239
233
|
internalNotes?: string | null;
|
|
@@ -247,7 +241,7 @@ export interface Appointment {
|
|
|
247
241
|
|
|
248
242
|
/** Procedure-related conditions and requirements */
|
|
249
243
|
blockingConditions: BlockingCondition[];
|
|
250
|
-
contraindications:
|
|
244
|
+
contraindications: Contraindication[];
|
|
251
245
|
preProcedureRequirements: Requirement[];
|
|
252
246
|
postProcedureRequirements: Requirement[];
|
|
253
247
|
|
|
@@ -328,7 +322,7 @@ export interface UpdateAppointmentData {
|
|
|
328
322
|
procedureActualStartTime?: Timestamp | FieldValue | null; // NEW
|
|
329
323
|
actualDurationMinutes?: number;
|
|
330
324
|
cancellationReason?: string | null;
|
|
331
|
-
canceledBy?:
|
|
325
|
+
canceledBy?: 'patient' | 'clinic' | 'practitioner' | 'system';
|
|
332
326
|
internalNotes?: string | null;
|
|
333
327
|
patientNotes?: string | FieldValue | null; // Allow FieldValue for deleting
|
|
334
328
|
paymentStatus?: PaymentStatus;
|
|
@@ -380,4 +374,4 @@ export interface SearchAppointmentsParams {
|
|
|
380
374
|
}
|
|
381
375
|
|
|
382
376
|
/** Firestore collection name */
|
|
383
|
-
export const APPOINTMENTS_COLLECTION =
|
|
377
|
+
export const APPOINTMENTS_COLLECTION = 'appointments';
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { Timestamp, FieldValue } from "firebase/firestore";
|
|
2
|
-
|
|
2
|
+
import type { ProcedureFamily } from "../../backoffice/types/static/procedure-family.types";
|
|
3
|
+
import type { TreatmentBenefit } from "../../backoffice/types/static/treatment-benefit.types";
|
|
4
|
+
import type {
|
|
5
|
+
Currency,
|
|
6
|
+
PricingMeasure,
|
|
7
|
+
} from "../../backoffice/types/static/pricing.types";
|
|
3
8
|
import type { ClinicInfo } from "../profile";
|
|
4
9
|
import { ClinicReviewInfo } from "../reviews";
|
|
5
10
|
import { ProcedureSummaryInfo } from "../procedure";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Timestamp } from "firebase/firestore";
|
|
2
2
|
import { BlockingCondition } from "../../backoffice/types/static/blocking-condition.types";
|
|
3
|
+
import { Contraindication } from "../../backoffice/types/static/contraindication.types";
|
|
3
4
|
import { AllergyType, AllergySubtype } from "./allergies";
|
|
4
|
-
import type { ContraindicationDynamic } from "../../backoffice";
|
|
5
5
|
|
|
6
6
|
export const PATIENT_MEDICAL_INFO_COLLECTION = "medical_info";
|
|
7
7
|
|
|
@@ -38,7 +38,7 @@ export interface PatientMedicalInfo {
|
|
|
38
38
|
}[];
|
|
39
39
|
|
|
40
40
|
contraindications: {
|
|
41
|
-
condition:
|
|
41
|
+
condition: Contraindication;
|
|
42
42
|
lastOccurrence: Timestamp;
|
|
43
43
|
frequency: "rare" | "occasional" | "frequent";
|
|
44
44
|
isActive: boolean;
|
|
@@ -113,7 +113,7 @@ export interface UpdateBlockingConditionData
|
|
|
113
113
|
|
|
114
114
|
// Interfejsi za kontraindikacije
|
|
115
115
|
export interface AddContraindicationData {
|
|
116
|
-
condition:
|
|
116
|
+
condition: Contraindication;
|
|
117
117
|
lastOccurrence: Timestamp;
|
|
118
118
|
frequency: "rare" | "occasional" | "frequent";
|
|
119
119
|
isActive: boolean;
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BlockingCondition,
|
|
3
|
-
CertificationRequirement,
|
|
4
|
-
ProcedureFamily,
|
|
5
|
-
} from "../../backoffice/types";
|
|
6
|
-
import {
|
|
7
|
-
ContraindicationDynamic,
|
|
8
|
-
TreatmentBenefitDynamic,
|
|
9
|
-
} from "../../backoffice/types/admin-constants.types";
|
|
10
|
-
import { Requirement } from "../../backoffice/types/requirement.types";
|
|
1
|
+
import { ProcedureFamily } from "../../backoffice/types/static/procedure-family.types";
|
|
11
2
|
import { Category } from "../../backoffice/types/category.types";
|
|
12
3
|
import { Subcategory } from "../../backoffice/types/subcategory.types";
|
|
13
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Technology,
|
|
6
|
+
type TechnologyDocumentationTemplate,
|
|
7
|
+
} from "../../backoffice/types/technology.types";
|
|
14
8
|
import { Product } from "../../backoffice/types/product.types";
|
|
15
|
-
import { ClinicInfo, DoctorInfo } from "../../types/";
|
|
16
|
-
import { ProcedureReviewInfo } from "../reviews";
|
|
17
|
-
import { TechnologyDocumentationTemplate } from "../../backoffice/types/technology.types";
|
|
18
9
|
import {
|
|
19
10
|
PricingMeasure,
|
|
20
11
|
Currency,
|
|
21
12
|
} from "../../backoffice/types/static/pricing.types";
|
|
13
|
+
import { Requirement } from "../../backoffice/types/requirement.types";
|
|
14
|
+
import { BlockingCondition } from "../../backoffice/types/static/blocking-condition.types";
|
|
15
|
+
import { TreatmentBenefit } from "../../backoffice/types/static/treatment-benefit.types";
|
|
16
|
+
import { CertificationRequirement } from "../../backoffice/types/static/certification.types";
|
|
17
|
+
import { DocumentTemplate } from "../documentation-templates";
|
|
18
|
+
import { ClinicInfo } from "../profile";
|
|
19
|
+
import { DoctorInfo } from "../clinic";
|
|
20
|
+
import { PRACTITIONERS_COLLECTION } from "../practitioner";
|
|
21
|
+
import { ProcedureReviewInfo } from "../reviews";
|
|
22
|
+
import type { Contraindication } from "../../backoffice/types/static/contraindication.types";
|
|
22
23
|
import { MediaResource } from "../../services/media/media.service";
|
|
23
24
|
|
|
24
25
|
/**
|
|
@@ -57,13 +58,9 @@ export interface Procedure {
|
|
|
57
58
|
/** Blocking conditions that prevent this procedure */
|
|
58
59
|
blockingConditions: BlockingCondition[];
|
|
59
60
|
/** Treatment benefits of this procedure */
|
|
60
|
-
treatmentBenefits:
|
|
61
|
-
/** A list of just the string IDs of the treatment benefits, for efficient querying. */
|
|
62
|
-
treatmentBenefitIds: string[];
|
|
61
|
+
treatmentBenefits: TreatmentBenefit[];
|
|
63
62
|
/** Contraindications of this procedure */
|
|
64
|
-
contraindications:
|
|
65
|
-
/** A list of just the string IDs of the contraindications, for efficient querying. */
|
|
66
|
-
contraindicationIds: string[];
|
|
63
|
+
contraindications: Contraindication[];
|
|
67
64
|
/** Pre-procedure requirements */
|
|
68
65
|
preRequirements: Requirement[];
|
|
69
66
|
/** Post-procedure requirements */
|