@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.
@@ -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 the third level of hierarchy, belonging to a specific subcategory
504
- * and represent a specific method or approach to treatment
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 treći nivo organizacije i pripadaju određenoj podkategoriji.
4534
- * Svaka tehnologija može imati svoje specifične zahteve pre i posle procedure.
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(categoryId, subcategoryId, {
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(categoryId, subcategoryId, technology.id, {
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 za određenu podkategoriju
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 u okviru podkategorije
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(categoryId: string, subcategoryId: string, technology: Omit<Technology, "id" | "createdAt" | "updatedAt">): Promise<{
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 za određenu podkategoriju
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(categoryId: string, subcategoryId: string): Promise<Technology[]>;
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(categoryId: string, subcategoryId: string, technologyId: string, technology: Partial<Omit<Technology, "id" | "createdAt" | "subcategoryId">>): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<void>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, requirement: Requirement): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, requirement: Requirement): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, type?: RequirementType): Promise<Requirement[]>;
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(categoryId: string, subcategoryId: string, technologyId: string, oldRequirement: Requirement, newRequirement: Requirement): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, condition: BlockingCondition): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, condition: BlockingCondition): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, contraindication: Contraindication): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, contraindication: Contraindication): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, benefit: TreatmentBenefit): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string, benefit: TreatmentBenefit): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<BlockingCondition[]>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<Contraindication[]>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<TreatmentBenefit[]>;
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(categoryId: string, subcategoryId: string, technologyId: string, certificationRequirement: CertificationRequirement): Promise<Technology | null>;
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(categoryId: string, subcategoryId: string, technologyId: string): Promise<CertificationRequirement | null>;
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
  /**