@blackcode_sa/metaestetics-api 1.5.10 → 1.5.12
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/backoffice/index.d.mts +209 -71
- package/dist/backoffice/index.d.ts +209 -71
- package/dist/backoffice/index.js +197 -175
- package/dist/backoffice/index.mjs +197 -175
- package/dist/index.d.mts +133 -70
- package/dist/index.d.ts +133 -70
- package/dist/index.js +238 -180
- package/dist/index.mjs +238 -180
- package/package.json +1 -1
- package/src/backoffice/services/technology.service.ts +237 -240
- package/src/backoffice/types/technology.types.ts +11 -2
- package/src/backoffice/validations/schemas.ts +2 -0
- package/src/services/procedure/procedure.service.ts +62 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Auth } from 'firebase/auth';
|
|
3
|
-
import { Firestore, QueryDocumentSnapshot } from 'firebase/firestore';
|
|
3
|
+
import { Firestore, Timestamp, QueryDocumentSnapshot } from 'firebase/firestore';
|
|
4
4
|
import { FirebaseApp } from 'firebase/app';
|
|
5
5
|
import { FirebaseStorage } from 'firebase/storage';
|
|
6
6
|
|
|
@@ -500,12 +500,14 @@ interface TechnologyRequirements {
|
|
|
500
500
|
}
|
|
501
501
|
/**
|
|
502
502
|
* Technology used in medical procedures
|
|
503
|
-
* Technologies are
|
|
504
|
-
*
|
|
503
|
+
* Technologies are now a top-level collection that reference their full path in the hierarchy
|
|
504
|
+
* through family, category, and subcategory IDs
|
|
505
505
|
*
|
|
506
506
|
* @property id - Unique identifier of the technology
|
|
507
507
|
* @property name - Name of the technology
|
|
508
508
|
* @property description - Detailed description of the technology and its application
|
|
509
|
+
* @property family - The procedure family this technology belongs to (aesthetics/surgery)
|
|
510
|
+
* @property categoryId - ID of the category this technology belongs to
|
|
509
511
|
* @property subcategoryId - ID of the subcategory this technology belongs to
|
|
510
512
|
* @property technicalDetails - Technical specifications and details
|
|
511
513
|
* @property requirements - List of pre and post procedure requirements
|
|
@@ -525,6 +527,10 @@ interface Technology {
|
|
|
525
527
|
name: string;
|
|
526
528
|
/** Detaljan opis tehnologije */
|
|
527
529
|
description: string;
|
|
530
|
+
/** Familija procedura kojoj tehnologija pripada */
|
|
531
|
+
family: ProcedureFamily;
|
|
532
|
+
/** ID kategorije kojoj tehnologija pripada */
|
|
533
|
+
categoryId: string;
|
|
528
534
|
/** ID potkategorije kojoj tehnologija pripada */
|
|
529
535
|
subcategoryId: string;
|
|
530
536
|
/** Tehnički detalji i specifikacije */
|
|
@@ -2566,6 +2572,8 @@ declare const technologySchema: z.ZodObject<{
|
|
|
2566
2572
|
name: z.ZodString;
|
|
2567
2573
|
description: z.ZodOptional<z.ZodString>;
|
|
2568
2574
|
technicalDetails: z.ZodOptional<z.ZodString>;
|
|
2575
|
+
family: z.ZodNativeEnum<typeof ProcedureFamily>;
|
|
2576
|
+
categoryId: z.ZodString;
|
|
2569
2577
|
subcategoryId: z.ZodString;
|
|
2570
2578
|
requirements: z.ZodDefault<z.ZodObject<{
|
|
2571
2579
|
pre: z.ZodArray<z.ZodObject<{
|
|
@@ -3163,6 +3171,8 @@ declare const technologySchema: z.ZodObject<{
|
|
|
3163
3171
|
}, "strip", z.ZodTypeAny, {
|
|
3164
3172
|
isActive: boolean;
|
|
3165
3173
|
name: string;
|
|
3174
|
+
family: ProcedureFamily;
|
|
3175
|
+
categoryId: string;
|
|
3166
3176
|
subcategoryId: string;
|
|
3167
3177
|
requirements: {
|
|
3168
3178
|
pre: {
|
|
@@ -3290,6 +3300,8 @@ declare const technologySchema: z.ZodObject<{
|
|
|
3290
3300
|
technicalDetails?: string | undefined;
|
|
3291
3301
|
}, {
|
|
3292
3302
|
name: string;
|
|
3303
|
+
family: ProcedureFamily;
|
|
3304
|
+
categoryId: string;
|
|
3293
3305
|
subcategoryId: string;
|
|
3294
3306
|
blockingConditions: BlockingCondition[];
|
|
3295
3307
|
contraindications: Contraindication[];
|
|
@@ -3494,6 +3506,8 @@ declare const technologyUpdateSchema: z.ZodObject<{
|
|
|
3494
3506
|
name: z.ZodOptional<z.ZodString>;
|
|
3495
3507
|
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
3496
3508
|
technicalDetails: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
3509
|
+
family: z.ZodOptional<z.ZodNativeEnum<typeof ProcedureFamily>>;
|
|
3510
|
+
categoryId: z.ZodOptional<z.ZodString>;
|
|
3497
3511
|
subcategoryId: z.ZodOptional<z.ZodString>;
|
|
3498
3512
|
requirements: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
3499
3513
|
pre: z.ZodArray<z.ZodObject<{
|
|
@@ -4093,6 +4107,8 @@ declare const technologyUpdateSchema: z.ZodObject<{
|
|
|
4093
4107
|
isActive?: boolean | undefined;
|
|
4094
4108
|
name?: string | undefined;
|
|
4095
4109
|
technicalDetails?: string | undefined;
|
|
4110
|
+
family?: ProcedureFamily | undefined;
|
|
4111
|
+
categoryId?: string | undefined;
|
|
4096
4112
|
subcategoryId?: string | undefined;
|
|
4097
4113
|
requirements?: {
|
|
4098
4114
|
pre: {
|
|
@@ -4221,6 +4237,8 @@ declare const technologyUpdateSchema: z.ZodObject<{
|
|
|
4221
4237
|
isActive?: boolean | undefined;
|
|
4222
4238
|
name?: string | undefined;
|
|
4223
4239
|
technicalDetails?: string | undefined;
|
|
4240
|
+
family?: ProcedureFamily | undefined;
|
|
4241
|
+
categoryId?: string | undefined;
|
|
4224
4242
|
subcategoryId?: string | undefined;
|
|
4225
4243
|
requirements?: {
|
|
4226
4244
|
pre: {
|
|
@@ -4528,22 +4546,115 @@ declare class SubcategoryService extends BaseService {
|
|
|
4528
4546
|
getById(categoryId: string, subcategoryId: string): Promise<Subcategory | null>;
|
|
4529
4547
|
}
|
|
4530
4548
|
|
|
4549
|
+
/**
|
|
4550
|
+
* Osnovne informacije o zdravstvenom radniku
|
|
4551
|
+
*/
|
|
4552
|
+
interface PractitionerBasicInfo {
|
|
4553
|
+
firstName: string;
|
|
4554
|
+
lastName: string;
|
|
4555
|
+
title: string;
|
|
4556
|
+
email: string;
|
|
4557
|
+
phoneNumber: string;
|
|
4558
|
+
dateOfBirth: Timestamp;
|
|
4559
|
+
gender: "male" | "female" | "other";
|
|
4560
|
+
profileImageUrl?: string;
|
|
4561
|
+
bio?: string;
|
|
4562
|
+
languages: string[];
|
|
4563
|
+
}
|
|
4564
|
+
/**
|
|
4565
|
+
* Sertifikacija zdravstvenog radnika
|
|
4566
|
+
*/
|
|
4567
|
+
interface PractitionerCertification {
|
|
4568
|
+
level: CertificationLevel;
|
|
4569
|
+
specialties: CertificationSpecialty[];
|
|
4570
|
+
licenseNumber: string;
|
|
4571
|
+
issuingAuthority: string;
|
|
4572
|
+
issueDate: Timestamp;
|
|
4573
|
+
expiryDate?: Timestamp;
|
|
4574
|
+
verificationStatus: "pending" | "verified" | "rejected";
|
|
4575
|
+
}
|
|
4576
|
+
/**
|
|
4577
|
+
* Interfejs za radno vreme zdravstvenog radnika u klinici
|
|
4578
|
+
*/
|
|
4579
|
+
interface PractitionerClinicWorkingHours {
|
|
4580
|
+
clinicId: string;
|
|
4581
|
+
workingHours: {
|
|
4582
|
+
monday: {
|
|
4583
|
+
start: string;
|
|
4584
|
+
end: string;
|
|
4585
|
+
} | null;
|
|
4586
|
+
tuesday: {
|
|
4587
|
+
start: string;
|
|
4588
|
+
end: string;
|
|
4589
|
+
} | null;
|
|
4590
|
+
wednesday: {
|
|
4591
|
+
start: string;
|
|
4592
|
+
end: string;
|
|
4593
|
+
} | null;
|
|
4594
|
+
thursday: {
|
|
4595
|
+
start: string;
|
|
4596
|
+
end: string;
|
|
4597
|
+
} | null;
|
|
4598
|
+
friday: {
|
|
4599
|
+
start: string;
|
|
4600
|
+
end: string;
|
|
4601
|
+
} | null;
|
|
4602
|
+
saturday: {
|
|
4603
|
+
start: string;
|
|
4604
|
+
end: string;
|
|
4605
|
+
} | null;
|
|
4606
|
+
sunday: {
|
|
4607
|
+
start: string;
|
|
4608
|
+
end: string;
|
|
4609
|
+
} | null;
|
|
4610
|
+
};
|
|
4611
|
+
isActive: boolean;
|
|
4612
|
+
createdAt: Timestamp;
|
|
4613
|
+
updatedAt: Timestamp;
|
|
4614
|
+
}
|
|
4615
|
+
/**
|
|
4616
|
+
* Status of practitioner profile
|
|
4617
|
+
*/
|
|
4618
|
+
declare enum PractitionerStatus {
|
|
4619
|
+
DRAFT = "draft",
|
|
4620
|
+
ACTIVE = "active"
|
|
4621
|
+
}
|
|
4622
|
+
/**
|
|
4623
|
+
* Interfejs za zdravstvenog radnika
|
|
4624
|
+
*/
|
|
4625
|
+
interface Practitioner {
|
|
4626
|
+
id: string;
|
|
4627
|
+
userRef: string;
|
|
4628
|
+
basicInfo: PractitionerBasicInfo;
|
|
4629
|
+
certification: PractitionerCertification;
|
|
4630
|
+
clinics: string[];
|
|
4631
|
+
clinicWorkingHours: PractitionerClinicWorkingHours[];
|
|
4632
|
+
isActive: boolean;
|
|
4633
|
+
isVerified: boolean;
|
|
4634
|
+
status: PractitionerStatus;
|
|
4635
|
+
createdAt: Timestamp;
|
|
4636
|
+
updatedAt: Timestamp;
|
|
4637
|
+
}
|
|
4638
|
+
|
|
4531
4639
|
/**
|
|
4532
4640
|
* Servis za upravljanje tehnologijama i njihovim zahtevima.
|
|
4533
|
-
* Tehnologije su
|
|
4534
|
-
*
|
|
4641
|
+
* Tehnologije su sada top-level kolekcija koja referencira svoju putanju u hijerarhiji
|
|
4642
|
+
* kroz family, categoryId i subcategoryId.
|
|
4535
4643
|
*
|
|
4536
4644
|
* @example
|
|
4537
4645
|
* const technologyService = new TechnologyService();
|
|
4538
4646
|
*
|
|
4539
4647
|
* // Kreiranje nove tehnologije
|
|
4540
|
-
* const technology = await technologyService.create(
|
|
4648
|
+
* const technology = await technologyService.create({
|
|
4541
4649
|
* name: "Botulinum Toxin",
|
|
4542
|
-
* description: "Neurotoxin injections for wrinkle reduction"
|
|
4650
|
+
* description: "Neurotoxin injections for wrinkle reduction",
|
|
4651
|
+
* family: ProcedureFamily.AESTHETICS,
|
|
4652
|
+
* categoryId: "category123",
|
|
4653
|
+
* subcategoryId: "subcategory456"
|
|
4543
4654
|
* });
|
|
4544
4655
|
*
|
|
4545
4656
|
* // Dodavanje zahteva
|
|
4546
|
-
* await technologyService.addRequirement(
|
|
4657
|
+
* await technologyService.addRequirement(technology.id, {
|
|
4547
4658
|
* type: "pre",
|
|
4548
4659
|
* name: "Stay Hydrated",
|
|
4549
4660
|
* description: "Drink plenty of water"
|
|
@@ -4551,25 +4662,23 @@ declare class SubcategoryService extends BaseService {
|
|
|
4551
4662
|
*/
|
|
4552
4663
|
declare class TechnologyService extends BaseService {
|
|
4553
4664
|
/**
|
|
4554
|
-
* Vraća referencu na Firestore kolekciju tehnologija
|
|
4555
|
-
* @param categoryId - ID kategorije
|
|
4556
|
-
* @param subcategoryId - ID podkategorije
|
|
4665
|
+
* Vraća referencu na Firestore kolekciju tehnologija
|
|
4557
4666
|
*/
|
|
4558
4667
|
private getTechnologiesRef;
|
|
4559
4668
|
/**
|
|
4560
|
-
* Kreira novu tehnologiju
|
|
4561
|
-
* @param categoryId - ID kategorije
|
|
4562
|
-
* @param subcategoryId - ID podkategorije
|
|
4669
|
+
* Kreira novu tehnologiju
|
|
4563
4670
|
* @param technology - Podaci za novu tehnologiju
|
|
4564
4671
|
* @returns Kreirana tehnologija sa generisanim ID-em
|
|
4565
4672
|
*/
|
|
4566
|
-
create(
|
|
4673
|
+
create(technology: Omit<Technology, "id" | "createdAt" | "updatedAt">): Promise<{
|
|
4567
4674
|
description: string;
|
|
4568
4675
|
isActive: boolean;
|
|
4569
4676
|
createdAt: Date;
|
|
4570
4677
|
updatedAt: Date;
|
|
4571
4678
|
name: string;
|
|
4572
4679
|
technicalDetails?: string | undefined;
|
|
4680
|
+
family: ProcedureFamily;
|
|
4681
|
+
categoryId: string;
|
|
4573
4682
|
subcategoryId: string;
|
|
4574
4683
|
requirements: {
|
|
4575
4684
|
pre: Requirement[];
|
|
@@ -4583,168 +4692,197 @@ declare class TechnologyService extends BaseService {
|
|
|
4583
4692
|
id: string;
|
|
4584
4693
|
}>;
|
|
4585
4694
|
/**
|
|
4586
|
-
* Vraća sve aktivne tehnologije
|
|
4695
|
+
* Vraća sve aktivne tehnologije
|
|
4696
|
+
* @returns Lista aktivnih tehnologija
|
|
4697
|
+
*/
|
|
4698
|
+
getAll(): Promise<Technology[]>;
|
|
4699
|
+
/**
|
|
4700
|
+
* Vraća sve aktivne tehnologije za određenu familiju
|
|
4701
|
+
* @param family - Familija procedura
|
|
4702
|
+
* @returns Lista aktivnih tehnologija
|
|
4703
|
+
*/
|
|
4704
|
+
getAllByFamily(family: ProcedureFamily): Promise<Technology[]>;
|
|
4705
|
+
/**
|
|
4706
|
+
* Vraća sve aktivne tehnologije za određenu kategoriju
|
|
4587
4707
|
* @param categoryId - ID kategorije
|
|
4708
|
+
* @returns Lista aktivnih tehnologija
|
|
4709
|
+
*/
|
|
4710
|
+
getAllByCategoryId(categoryId: string): Promise<Technology[]>;
|
|
4711
|
+
/**
|
|
4712
|
+
* Vraća sve aktivne tehnologije za određenu podkategoriju
|
|
4588
4713
|
* @param subcategoryId - ID podkategorije
|
|
4589
4714
|
* @returns Lista aktivnih tehnologija
|
|
4590
4715
|
*/
|
|
4591
|
-
getAllBySubcategoryId(
|
|
4716
|
+
getAllBySubcategoryId(subcategoryId: string): Promise<Technology[]>;
|
|
4592
4717
|
/**
|
|
4593
4718
|
* Ažurira postojeću tehnologiju
|
|
4594
|
-
* @param categoryId - ID kategorije
|
|
4595
|
-
* @param subcategoryId - ID podkategorije
|
|
4596
4719
|
* @param technologyId - ID tehnologije
|
|
4597
4720
|
* @param technology - Novi podaci za tehnologiju
|
|
4598
4721
|
* @returns Ažurirana tehnologija
|
|
4599
4722
|
*/
|
|
4600
|
-
update(
|
|
4723
|
+
update(technologyId: string, technology: Partial<Omit<Technology, "id" | "createdAt" | "family" | "categoryId" | "subcategoryId">>): Promise<Technology | null>;
|
|
4601
4724
|
/**
|
|
4602
4725
|
* Soft delete tehnologije (postavlja isActive na false)
|
|
4603
|
-
* @param categoryId - ID kategorije
|
|
4604
|
-
* @param subcategoryId - ID podkategorije
|
|
4605
4726
|
* @param technologyId - ID tehnologije koja se briše
|
|
4606
4727
|
*/
|
|
4607
|
-
delete(
|
|
4728
|
+
delete(technologyId: string): Promise<void>;
|
|
4608
4729
|
/**
|
|
4609
4730
|
* Vraća tehnologiju po ID-u
|
|
4610
|
-
* @param categoryId - ID kategorije
|
|
4611
|
-
* @param subcategoryId - ID podkategorije
|
|
4612
4731
|
* @param technologyId - ID tražene tehnologije
|
|
4613
4732
|
* @returns Tehnologija ili null ako ne postoji
|
|
4614
4733
|
*/
|
|
4615
|
-
getById(
|
|
4734
|
+
getById(technologyId: string): Promise<Technology | null>;
|
|
4616
4735
|
/**
|
|
4617
4736
|
* Dodaje novi zahtev tehnologiji
|
|
4618
|
-
* @param categoryId - ID kategorije
|
|
4619
|
-
* @param subcategoryId - ID podkategorije
|
|
4620
4737
|
* @param technologyId - ID tehnologije
|
|
4621
4738
|
* @param requirement - Zahtev koji se dodaje
|
|
4622
4739
|
* @returns Ažurirana tehnologija sa novim zahtevom
|
|
4623
4740
|
*/
|
|
4624
|
-
addRequirement(
|
|
4741
|
+
addRequirement(technologyId: string, requirement: Requirement): Promise<Technology | null>;
|
|
4625
4742
|
/**
|
|
4626
4743
|
* Uklanja zahtev iz tehnologije
|
|
4627
|
-
* @param categoryId - ID kategorije
|
|
4628
|
-
* @param subcategoryId - ID podkategorije
|
|
4629
4744
|
* @param technologyId - ID tehnologije
|
|
4630
4745
|
* @param requirement - Zahtev koji se uklanja
|
|
4631
4746
|
* @returns Ažurirana tehnologija bez uklonjenog zahteva
|
|
4632
4747
|
*/
|
|
4633
|
-
removeRequirement(
|
|
4748
|
+
removeRequirement(technologyId: string, requirement: Requirement): Promise<Technology | null>;
|
|
4634
4749
|
/**
|
|
4635
4750
|
* Vraća sve zahteve za tehnologiju
|
|
4636
|
-
* @param categoryId - ID kategorije
|
|
4637
|
-
* @param subcategoryId - ID podkategorije
|
|
4638
4751
|
* @param technologyId - ID tehnologije
|
|
4639
4752
|
* @param type - Opcioni filter za tip zahteva (pre/post)
|
|
4640
4753
|
* @returns Lista zahteva
|
|
4641
4754
|
*/
|
|
4642
|
-
getRequirements(
|
|
4755
|
+
getRequirements(technologyId: string, type?: RequirementType): Promise<Requirement[]>;
|
|
4643
4756
|
/**
|
|
4644
4757
|
* Ažurira postojeći zahtev
|
|
4645
|
-
* @param categoryId - ID kategorije
|
|
4646
|
-
* @param subcategoryId - ID podkategorije
|
|
4647
4758
|
* @param technologyId - ID tehnologije
|
|
4648
4759
|
* @param oldRequirement - Stari zahtev koji se menja
|
|
4649
4760
|
* @param newRequirement - Novi zahtev koji zamenjuje stari
|
|
4650
4761
|
* @returns Ažurirana tehnologija
|
|
4651
4762
|
*/
|
|
4652
|
-
updateRequirement(
|
|
4763
|
+
updateRequirement(technologyId: string, oldRequirement: Requirement, newRequirement: Requirement): Promise<Technology | null>;
|
|
4653
4764
|
/**
|
|
4654
4765
|
* Dodaje blokirajući uslov tehnologiji
|
|
4655
|
-
* @param categoryId - ID kategorije
|
|
4656
|
-
* @param subcategoryId - ID podkategorije
|
|
4657
4766
|
* @param technologyId - ID tehnologije
|
|
4658
4767
|
* @param condition - Blokirajući uslov koji se dodaje
|
|
4659
4768
|
* @returns Ažurirana tehnologija
|
|
4660
4769
|
*/
|
|
4661
|
-
addBlockingCondition(
|
|
4770
|
+
addBlockingCondition(technologyId: string, condition: BlockingCondition): Promise<Technology | null>;
|
|
4662
4771
|
/**
|
|
4663
4772
|
* Uklanja blokirajući uslov iz tehnologije
|
|
4664
|
-
* @param categoryId - ID kategorije
|
|
4665
|
-
* @param subcategoryId - ID podkategorije
|
|
4666
4773
|
* @param technologyId - ID tehnologije
|
|
4667
4774
|
* @param condition - Blokirajući uslov koji se uklanja
|
|
4668
4775
|
* @returns Ažurirana tehnologija
|
|
4669
4776
|
*/
|
|
4670
|
-
removeBlockingCondition(
|
|
4777
|
+
removeBlockingCondition(technologyId: string, condition: BlockingCondition): Promise<Technology | null>;
|
|
4671
4778
|
/**
|
|
4672
4779
|
* Dodaje kontraindikaciju tehnologiji
|
|
4673
|
-
* @param categoryId - ID kategorije
|
|
4674
|
-
* @param subcategoryId - ID podkategorije
|
|
4675
4780
|
* @param technologyId - ID tehnologije
|
|
4676
4781
|
* @param contraindication - Kontraindikacija koja se dodaje
|
|
4677
4782
|
* @returns Ažurirana tehnologija
|
|
4678
4783
|
*/
|
|
4679
|
-
addContraindication(
|
|
4784
|
+
addContraindication(technologyId: string, contraindication: Contraindication): Promise<Technology | null>;
|
|
4680
4785
|
/**
|
|
4681
4786
|
* Uklanja kontraindikaciju iz tehnologije
|
|
4682
|
-
* @param categoryId - ID kategorije
|
|
4683
|
-
* @param subcategoryId - ID podkategorije
|
|
4684
4787
|
* @param technologyId - ID tehnologije
|
|
4685
4788
|
* @param contraindication - Kontraindikacija koja se uklanja
|
|
4686
4789
|
* @returns Ažurirana tehnologija
|
|
4687
4790
|
*/
|
|
4688
|
-
removeContraindication(
|
|
4791
|
+
removeContraindication(technologyId: string, contraindication: Contraindication): Promise<Technology | null>;
|
|
4689
4792
|
/**
|
|
4690
4793
|
* Dodaje benefit tehnologiji
|
|
4691
|
-
* @param categoryId - ID kategorije
|
|
4692
|
-
* @param subcategoryId - ID podkategorije
|
|
4693
4794
|
* @param technologyId - ID tehnologije
|
|
4694
4795
|
* @param benefit - Benefit koji se dodaje
|
|
4695
4796
|
* @returns Ažurirana tehnologija
|
|
4696
4797
|
*/
|
|
4697
|
-
addBenefit(
|
|
4798
|
+
addBenefit(technologyId: string, benefit: TreatmentBenefit): Promise<Technology | null>;
|
|
4698
4799
|
/**
|
|
4699
4800
|
* Uklanja benefit iz tehnologije
|
|
4700
|
-
* @param categoryId - ID kategorije
|
|
4701
|
-
* @param subcategoryId - ID podkategorije
|
|
4702
4801
|
* @param technologyId - ID tehnologije
|
|
4703
4802
|
* @param benefit - Benefit koji se uklanja
|
|
4704
4803
|
* @returns Ažurirana tehnologija
|
|
4705
4804
|
*/
|
|
4706
|
-
removeBenefit(
|
|
4805
|
+
removeBenefit(technologyId: string, benefit: TreatmentBenefit): Promise<Technology | null>;
|
|
4707
4806
|
/**
|
|
4708
4807
|
* Vraća sve blokirajuće uslove za tehnologiju
|
|
4709
|
-
* @param categoryId - ID kategorije
|
|
4710
|
-
* @param subcategoryId - ID podkategorije
|
|
4711
4808
|
* @param technologyId - ID tehnologije
|
|
4712
4809
|
* @returns Lista blokirajućih uslova
|
|
4713
4810
|
*/
|
|
4714
|
-
getBlockingConditions(
|
|
4811
|
+
getBlockingConditions(technologyId: string): Promise<BlockingCondition[]>;
|
|
4715
4812
|
/**
|
|
4716
4813
|
* Vraća sve kontraindikacije za tehnologiju
|
|
4717
|
-
* @param categoryId - ID kategorije
|
|
4718
|
-
* @param subcategoryId - ID podkategorije
|
|
4719
4814
|
* @param technologyId - ID tehnologije
|
|
4720
4815
|
* @returns Lista kontraindikacija
|
|
4721
4816
|
*/
|
|
4722
|
-
getContraindications(
|
|
4817
|
+
getContraindications(technologyId: string): Promise<Contraindication[]>;
|
|
4723
4818
|
/**
|
|
4724
4819
|
* Vraća sve benefite za tehnologiju
|
|
4725
|
-
* @param categoryId - ID kategorije
|
|
4726
|
-
* @param subcategoryId - ID podkategorije
|
|
4727
4820
|
* @param technologyId - ID tehnologije
|
|
4728
4821
|
* @returns Lista benefita
|
|
4729
4822
|
*/
|
|
4730
|
-
getBenefits(
|
|
4823
|
+
getBenefits(technologyId: string): Promise<TreatmentBenefit[]>;
|
|
4731
4824
|
/**
|
|
4732
4825
|
* Ažurira zahteve sertifikacije za tehnologiju
|
|
4733
|
-
* @param categoryId - ID kategorije
|
|
4734
|
-
* @param subcategoryId - ID podkategorije
|
|
4735
4826
|
* @param technologyId - ID tehnologije
|
|
4736
4827
|
* @param certificationRequirement - Novi zahtevi sertifikacije
|
|
4737
4828
|
* @returns Ažurirana tehnologija
|
|
4738
4829
|
*/
|
|
4739
|
-
updateCertificationRequirement(
|
|
4830
|
+
updateCertificationRequirement(technologyId: string, certificationRequirement: CertificationRequirement): Promise<Technology | null>;
|
|
4740
4831
|
/**
|
|
4741
4832
|
* Vraća zahteve sertifikacije za tehnologiju
|
|
4742
|
-
* @param categoryId - ID kategorije
|
|
4743
|
-
* @param subcategoryId - ID podkategorije
|
|
4744
4833
|
* @param technologyId - ID tehnologije
|
|
4745
4834
|
* @returns Zahtevi sertifikacije ili null ako tehnologija ne postoji
|
|
4746
4835
|
*/
|
|
4747
|
-
getCertificationRequirement(
|
|
4836
|
+
getCertificationRequirement(technologyId: string): Promise<CertificationRequirement | null>;
|
|
4837
|
+
/**
|
|
4838
|
+
* Proverava da li doktor ima odgovarajuću sertifikaciju za izvođenje tehnologije
|
|
4839
|
+
*
|
|
4840
|
+
* @param requiredCertification - Zahtevana sertifikacija za tehnologiju
|
|
4841
|
+
* @param practitionerCertification - Sertifikacija zdravstvenog radnika
|
|
4842
|
+
* @returns true ako zdravstveni radnik ima odgovarajuću sertifikaciju, false ako nema
|
|
4843
|
+
*
|
|
4844
|
+
* @example
|
|
4845
|
+
* const isValid = technologyService.validateCertification(
|
|
4846
|
+
* {
|
|
4847
|
+
* minimumLevel: CertificationLevel.DOCTOR,
|
|
4848
|
+
* requiredSpecialties: [CertificationSpecialty.INJECTABLES]
|
|
4849
|
+
* },
|
|
4850
|
+
* {
|
|
4851
|
+
* level: CertificationLevel.SPECIALIST,
|
|
4852
|
+
* specialties: [CertificationSpecialty.INJECTABLES, CertificationSpecialty.LASER]
|
|
4853
|
+
* }
|
|
4854
|
+
* );
|
|
4855
|
+
*/
|
|
4856
|
+
validateCertification(requiredCertification: CertificationRequirement, practitionerCertification: PractitionerCertification): boolean;
|
|
4857
|
+
/**
|
|
4858
|
+
* Vraća sve tehnologije koje je zdravstveni radnik sertifikovan da izvodi
|
|
4859
|
+
* zajedno sa listama dozvoljenih familija, kategorija i podkategorija
|
|
4860
|
+
*
|
|
4861
|
+
* @param practitioner - Profil zdravstvenog radnika
|
|
4862
|
+
* @returns Objekat koji sadrži:
|
|
4863
|
+
* - technologies: Lista tehnologija koje zdravstveni radnik može da izvodi
|
|
4864
|
+
* - families: Lista familija procedura koje zdravstveni radnik može da izvodi
|
|
4865
|
+
* - categories: Lista ID-eva kategorija koje zdravstveni radnik može da izvodi
|
|
4866
|
+
* - subcategories: Lista ID-eva podkategorija koje zdravstveni radnik može da izvodi
|
|
4867
|
+
*
|
|
4868
|
+
* @example
|
|
4869
|
+
* const practitioner = {
|
|
4870
|
+
* certification: {
|
|
4871
|
+
* level: CertificationLevel.DOCTOR,
|
|
4872
|
+
* specialties: [CertificationSpecialty.INJECTABLES]
|
|
4873
|
+
* }
|
|
4874
|
+
* };
|
|
4875
|
+
* const allowedTechnologies = await technologyService.getAllowedTechnologies(practitioner);
|
|
4876
|
+
* console.log(allowedTechnologies.families); // [ProcedureFamily.AESTHETICS]
|
|
4877
|
+
* console.log(allowedTechnologies.categories); // ["category1", "category2"]
|
|
4878
|
+
* console.log(allowedTechnologies.subcategories); // ["subcategory1", "subcategory2"]
|
|
4879
|
+
*/
|
|
4880
|
+
getAllowedTechnologies(practitioner: Practitioner): Promise<{
|
|
4881
|
+
technologies: Technology[];
|
|
4882
|
+
families: ProcedureFamily[];
|
|
4883
|
+
categories: string[];
|
|
4884
|
+
subcategories: string[];
|
|
4885
|
+
}>;
|
|
4748
4886
|
}
|
|
4749
4887
|
|
|
4750
4888
|
/**
|