@icure/api 6.3.0 → 6.4.0
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/icc-api/api/IccAccesslogApi.d.ts +7 -0
- package/icc-api/api/IccAccesslogApi.js +20 -0
- package/icc-api/api/IccAccesslogApi.js.map +1 -1
- package/icc-api/api/IccCalendarItemApi.d.ts +7 -0
- package/icc-api/api/IccCalendarItemApi.js +20 -0
- package/icc-api/api/IccCalendarItemApi.js.map +1 -1
- package/icc-api/api/IccContactApi.d.ts +16 -0
- package/icc-api/api/IccContactApi.js +44 -0
- package/icc-api/api/IccContactApi.js.map +1 -1
- package/icc-api/api/IccDataownerApi.d.ts +33 -0
- package/icc-api/api/IccDataownerApi.js +55 -0
- package/icc-api/api/IccDataownerApi.js.map +1 -0
- package/icc-api/api/IccFormApi.d.ts +17 -0
- package/icc-api/api/IccFormApi.js +46 -0
- package/icc-api/api/IccFormApi.js.map +1 -1
- package/icc-api/api/IccGroupApi.d.ts +10 -1
- package/icc-api/api/IccGroupApi.js +23 -2
- package/icc-api/api/IccGroupApi.js.map +1 -1
- package/icc-api/api/IccHelementApi.d.ts +14 -0
- package/icc-api/api/IccHelementApi.js +40 -0
- package/icc-api/api/IccHelementApi.js.map +1 -1
- package/icc-api/api/IccInvoiceApi.d.ts +14 -0
- package/icc-api/api/IccInvoiceApi.js +40 -0
- package/icc-api/api/IccInvoiceApi.js.map +1 -1
- package/icc-api/api/IccMessageApi.d.ts +6 -0
- package/icc-api/api/IccMessageApi.js +15 -0
- package/icc-api/api/IccMessageApi.js.map +1 -1
- package/icc-api/api/IccUserApi.js +2 -2
- package/icc-api/api/IccUserApi.js.map +1 -1
- package/icc-api/iccApi.d.ts +1 -0
- package/icc-api/iccApi.js +1 -0
- package/icc-api/iccApi.js.map +1 -1
- package/icc-api/model/AttachmentMetadata.d.ts +21 -0
- package/icc-api/model/AttachmentMetadata.js +24 -0
- package/icc-api/model/AttachmentMetadata.js.map +1 -0
- package/icc-api/model/BulkAttachmentUpdateOptions.d.ts +28 -0
- package/icc-api/model/BulkAttachmentUpdateOptions.js +13 -0
- package/icc-api/model/BulkAttachmentUpdateOptions.js.map +1 -0
- package/icc-api/model/{Body2.d.ts → DataOwnerWithType.d.ts} +4 -4
- package/icc-api/model/{Body1.js → DataOwnerWithType.js} +5 -6
- package/icc-api/model/DataOwnerWithType.js.map +1 -0
- package/icc-api/model/DiaryNoteExportInfo.d.ts +1 -1
- package/icc-api/model/DiaryNoteExportInfo.js.map +1 -1
- package/icc-api/model/GroupDeletionReport.d.ts +17 -0
- package/icc-api/model/{Body2.js → GroupDeletionReport.js} +7 -8
- package/icc-api/model/GroupDeletionReport.js.map +1 -0
- package/icc-api/model/IncapacityExportInfo.d.ts +2 -0
- package/icc-api/model/IncapacityExportInfo.js.map +1 -1
- package/icc-api/model/{Body1.d.ts → Part.d.ts} +1 -2
- package/icc-api/model/Part.js +21 -0
- package/icc-api/model/Part.js.map +1 -0
- package/icc-api/model/UserGroup.d.ts +2 -0
- package/icc-api/model/UserGroup.js +0 -11
- package/icc-api/model/UserGroup.js.map +1 -1
- package/icc-api/model/models.d.ts +8 -1
- package/icc-api/model/models.js +8 -1
- package/icc-api/model/models.js.map +1 -1
- package/icc-x-api/auth/JwtAuthService.js.map +1 -1
- package/icc-x-api/filters/PatientByHcPartyAndAddressFilter.d.ts +21 -0
- package/icc-x-api/filters/PatientByHcPartyAndAddressFilter.js +24 -0
- package/icc-x-api/filters/PatientByHcPartyAndAddressFilter.js.map +1 -0
- package/icc-x-api/filters/filters.d.ts +2 -0
- package/icc-x-api/filters/filters.js +10 -0
- package/icc-x-api/filters/filters.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.d.ts +3 -1
- package/icc-x-api/icc-accesslog-x-api.js +8 -2
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-bekmehr-x-api.d.ts +1 -0
- package/icc-x-api/icc-bekmehr-x-api.js +100 -64
- package/icc-x-api/icc-bekmehr-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -1
- package/icc-x-api/icc-calendar-item-x-api.js +7 -2
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.d.ts +3 -1
- package/icc-x-api/icc-contact-x-api.js +10 -2
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.d.ts +3 -2
- package/icc-x-api/icc-form-x-api.js +6 -3
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.d.ts +8 -3
- package/icc-x-api/icc-helement-x-api.js +25 -4
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-invoice-x-api.d.ts +2 -1
- package/icc-x-api/icc-invoice-x-api.js +5 -2
- package/icc-x-api/icc-invoice-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.d.ts +2 -2
- package/icc-x-api/icc-patient-x-api.js +56 -51
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/package.json +1 -1
- package/icc-api/model/Body1.js.map +0 -1
- package/icc-api/model/Body2.js.map +0 -1
package/icc-api/model/models.js
CHANGED
|
@@ -39,11 +39,12 @@ __exportStar(require("./ApplicationSettings"), exports);
|
|
|
39
39
|
__exportStar(require("./AppointmentTypeAndPlace"), exports);
|
|
40
40
|
__exportStar(require("./Article"), exports);
|
|
41
41
|
__exportStar(require("./Atc"), exports);
|
|
42
|
+
__exportStar(require("./AttachmentMetadata"), exports);
|
|
42
43
|
__exportStar(require("./AuthenticationResponse"), exports);
|
|
43
44
|
__exportStar(require("./AuthenticationToken"), exports);
|
|
44
45
|
__exportStar(require("./Basic"), exports);
|
|
45
46
|
__exportStar(require("./Body"), exports);
|
|
46
|
-
__exportStar(require("./
|
|
47
|
+
__exportStar(require("./BulkAttachmentUpdateOptions"), exports);
|
|
47
48
|
__exportStar(require("./CalendarItem"), exports);
|
|
48
49
|
__exportStar(require("./CalendarItemTag"), exports);
|
|
49
50
|
__exportStar(require("./CalendarItemType"), exports);
|
|
@@ -54,6 +55,7 @@ __exportStar(require("./Classification"), exports);
|
|
|
54
55
|
__exportStar(require("./ClassificationTemplate"), exports);
|
|
55
56
|
__exportStar(require("./Code"), exports);
|
|
56
57
|
__exportStar(require("./CodeStub"), exports);
|
|
58
|
+
__exportStar(require("./CodeType"), exports);
|
|
57
59
|
__exportStar(require("./CommentedClassification"), exports);
|
|
58
60
|
__exportStar(require("./Commercialization"), exports);
|
|
59
61
|
__exportStar(require("./Company"), exports);
|
|
@@ -61,11 +63,14 @@ __exportStar(require("./Contact"), exports);
|
|
|
61
63
|
__exportStar(require("./Content"), exports);
|
|
62
64
|
__exportStar(require("./Copayment"), exports);
|
|
63
65
|
__exportStar(require("./Data"), exports);
|
|
66
|
+
__exportStar(require("./DataAttachment"), exports);
|
|
64
67
|
__exportStar(require("./DataOwnerRegistrationSuccess"), exports);
|
|
68
|
+
__exportStar(require("./DataOwnerWithType"), exports);
|
|
65
69
|
__exportStar(require("./DatabaseInfo"), exports);
|
|
66
70
|
__exportStar(require("./DatabaseInitialisation"), exports);
|
|
67
71
|
__exportStar(require("./DatabaseSynchronization"), exports);
|
|
68
72
|
__exportStar(require("./Delegation"), exports);
|
|
73
|
+
__exportStar(require("./DeletedAttachment"), exports);
|
|
69
74
|
__exportStar(require("./Device"), exports);
|
|
70
75
|
__exportStar(require("./DeviceType"), exports);
|
|
71
76
|
__exportStar(require("./DiaryNoteExportInfo"), exports);
|
|
@@ -111,6 +116,7 @@ __exportStar(require("./Group"), exports);
|
|
|
111
116
|
__exportStar(require("./GroupDatabasesInfo"), exports);
|
|
112
117
|
__exportStar(require("./GuiCode"), exports);
|
|
113
118
|
__exportStar(require("./GuiCodeType"), exports);
|
|
119
|
+
__exportStar(require("./GroupDeletionReport"), exports);
|
|
114
120
|
__exportStar(require("./HealthElement"), exports);
|
|
115
121
|
__exportStar(require("./HealthcareParty"), exports);
|
|
116
122
|
__exportStar(require("./HealthcarePartyHistoryStatus"), exports);
|
|
@@ -183,6 +189,7 @@ __exportStar(require("./PaginatedListVmp"), exports);
|
|
|
183
189
|
__exportStar(require("./PaginatedListVmpGroup"), exports);
|
|
184
190
|
__exportStar(require("./Paragraph"), exports);
|
|
185
191
|
__exportStar(require("./ParagraphAgreement"), exports);
|
|
192
|
+
__exportStar(require("./Part"), exports);
|
|
186
193
|
__exportStar(require("./Partnership"), exports);
|
|
187
194
|
__exportStar(require("./Patient"), exports);
|
|
188
195
|
__exportStar(require("./PatientHealthCareParty"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../icc-api/model/models.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccessLog } from './AccessLog'\nimport { Article } from './Article'\nimport { Classification } from './Classification'\nimport { Document } from './Document'\nimport { HealthElement } from './HealthElement'\nimport { Invoice } from './Invoice'\nimport { Form } from './Form'\nimport { Contact } from './Contact'\nimport { CalendarItem } from './CalendarItem'\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { Message } from './Message'\nimport { Receipt } from './Receipt'\nimport { Patient } from './Patient'\n\nexport * from './AbstractFilterCode'\nexport * from './AbstractFilterContact'\nexport * from './AbstractFilterDevice'\nexport * from './AbstractFilterHealthElement'\nexport * from './AbstractFilterHealthcareParty'\nexport * from './AbstractFilterInvoice'\nexport * from './AbstractFilterMaintenanceTask'\nexport * from './AbstractFilterPatient'\nexport * from './AbstractFilterService'\nexport * from './AbstractFilterUser'\nexport * from './AccessLog'\nexport * from './AddedDocument'\nexport * from './Address'\nexport * from './AdministrationQuantity'\nexport * from './Agenda'\nexport * from './AgreementAppendix'\nexport * from './Amp'\nexport * from './AmpComponent'\nexport * from './Ampp'\nexport * from './AmppComponent'\nexport * from './Annotation'\nexport * from './ApplicationSettings'\nexport * from './AppointmentTypeAndPlace'\nexport * from './Article'\nexport * from './Atc'\nexport * from './AuthenticationResponse'\nexport * from './AuthenticationToken'\nexport * from './Basic'\nexport * from './Body'\nexport * from './Body1'\nexport * from './CalendarItem'\nexport * from './CalendarItemTag'\nexport * from './CalendarItemType'\nexport * from './CareTeamMember'\nexport * from './CareTeamMembership'\nexport * from './CheckSMFPatientResult'\nexport * from './Classification'\nexport * from './ClassificationTemplate'\nexport * from './Code'\nexport * from './CodeStub'\nexport * from './CommentedClassification'\nexport * from './Commercialization'\nexport * from './Company'\nexport * from './Contact'\nexport * from './Content'\nexport * from './Copayment'\nexport * from './Data'\nexport * from './DataOwnerRegistrationSuccess'\nexport * from './DatabaseInfo'\nexport * from './DatabaseInitialisation'\nexport * from './DatabaseSynchronization'\nexport * from './Delegation'\nexport * from './Device'\nexport * from './DeviceType'\nexport * from './DiaryNoteExportInfo'\nexport * from './Dmpp'\nexport * from './DocIdentifier'\nexport * from './Document'\nexport * from './DocumentGroup'\nexport * from './DocumentTemplate'\nexport * from './Duration'\nexport * from './EIDItem'\nexport * from './Editor'\nexport * from './EfactInvoice'\nexport * from './Employer'\nexport * from './EmploymentInfo'\nexport * from './EntityReference'\nexport * from './EntityTemplate'\nexport * from './Episode'\nexport * from './FilterChainCode'\nexport * from './FilterChainContact'\nexport * from './FilterChainDevice'\nexport * from './FilterChainHealthElement'\nexport * from './FilterChainHealthcareParty'\nexport * from './FilterChainInvoice'\nexport * from './FilterChainMaintenanceTask'\nexport * from './FilterChainPatient'\nexport * from './FilterChainService'\nexport * from './FilterChainUser'\nexport * from './FinancialInstitutionInformation'\nexport * from './FlatRateTarification'\nexport * from './FlowItem'\nexport * from './Form'\nexport * from './FormColumn'\nexport * from './FormDataOption'\nexport * from './FormLayout'\nexport * from './FormLayoutData'\nexport * from './FormPlanning'\nexport * from './FormSection'\nexport * from './FormTemplate'\nexport * from './FormTemplateLayout'\nexport * from './Formula'\nexport * from './FrontEndMigration'\nexport * from './Group'\nexport * from './GroupDatabasesInfo'\nexport * from './GuiCode'\nexport * from './GuiCodeType'\nexport * from './HealthElement'\nexport * from './HealthcareParty'\nexport * from './HealthcarePartyHistoryStatus'\nexport * from './IcureStub'\nexport * from './IdWithRev'\nexport * from './Identifier'\nexport * from './IdentityDocumentReader'\nexport * from './ImportMapping'\nexport * from './ImportResult'\nexport * from './IncapacityExportInfo'\nexport * from './IndexingInfo'\nexport * from './Ingredient'\nexport * from './Insurability'\nexport * from './Insurance'\nexport * from './Invoice'\nexport * from './InvoiceItem'\nexport * from './InvoiceSender'\nexport * from './InvoicesBatch'\nexport * from './InvoicingCode'\nexport * from './Keyword'\nexport * from './KeywordSubword'\nexport * from './LabelledOccurence'\nexport * from './LetterValue'\nexport * from './ListOfIds'\nexport * from './ListOfProperties'\nexport * from './LoginCredentials'\nexport * from './MaintenanceTask'\nexport * from './MapOfIds'\nexport * from './Measure'\nexport * from './MedexInfo'\nexport * from './MedicalHouseContract'\nexport * from './MedicalLocation'\nexport * from './Medication'\nexport * from './MedicationSchemeExportInfo'\nexport * from './Medicinalproduct'\nexport * from './Message'\nexport * from './MessageReadStatus'\nexport * from './MessageWithBatch'\nexport * from './MessagesReadStatusUpdate'\nexport * from './MimeAttachment'\nexport * from './Nmp'\nexport * from './NoGenericPrescriptionReason'\nexport * from './NoSwitchReason'\nexport * from './NumeratorRange'\nexport * from './PackagingType'\nexport * from './PaginatedDocumentKeyIdPairObject'\nexport * from './PaginatedListAccessLog'\nexport * from './PaginatedListAmp'\nexport * from './PaginatedListClassification'\nexport * from './PaginatedListClassificationTemplate'\nexport * from './PaginatedListCode'\nexport * from './PaginatedListContact'\nexport * from './PaginatedListDevice'\nexport * from './PaginatedListDocument'\nexport * from './PaginatedListEntityTemplate'\nexport * from './PaginatedListForm'\nexport * from './PaginatedListGroup'\nexport * from './PaginatedListHealthElement'\nexport * from './PaginatedListHealthcareParty'\nexport * from './PaginatedListInvoice'\nexport * from './PaginatedListMaintenanceTask'\nexport * from './PaginatedListMessage'\nexport * from './PaginatedListNmp'\nexport * from './PaginatedListPatient'\nexport * from './PaginatedListService'\nexport * from './PaginatedListString'\nexport * from './PaginatedListTarification'\nexport * from './PaginatedListUser'\nexport * from './PaginatedListVmp'\nexport * from './PaginatedListVmpGroup'\nexport * from './Paragraph'\nexport * from './ParagraphAgreement'\nexport * from './Partnership'\nexport * from './Patient'\nexport * from './PatientHealthCareParty'\nexport * from './Payment'\nexport * from './Periodicity'\nexport * from './Permission'\nexport * from './PermissionItem'\nexport * from './PersonName'\nexport * from './PharmaceuticalForm'\nexport * from './PharmaceuticalFormStub'\nexport * from './Place'\nexport * from './PlanOfAction'\nexport * from './Predicate'\nexport * from './Pricing'\nexport * from './PropertyStub'\nexport * from './PropertyTypeStub'\nexport * from './PublicKey'\nexport * from './Quantity'\nexport * from './Receipt'\nexport * from './ReferralPeriod'\nexport * from './RegimenItem'\nexport * from './RegistrationInformation'\nexport * from './RegistrationSuccess'\nexport * from './Reimbursement'\nexport * from './ReimbursementCriterion'\nexport * from './Remote'\nexport * from './RemoteAuthentication'\nexport * from './Renewal'\nexport * from './Replication'\nexport * from './ReplicateCommand'\nexport * from './ReplicationInfo'\nexport * from './ReplicationStats'\nexport * from './ReplicatorDocument'\nexport * from './ReplicatorResponse'\nexport * from './ResultInfo'\nexport * from './Right'\nexport * from './RouteOfAdministration'\nexport * from './SamText'\nexport * from './SamVersion'\nexport * from './SchoolingInfo'\nexport * from './Section'\nexport * from './Service'\nexport * from './ServiceLink'\nexport * from './SoftwareMedicalFileExport'\nexport * from './StandardSubstance'\nexport * from './StrengthRange'\nexport * from './StructureElement'\nexport * from './SubContact'\nexport * from './Substance'\nexport * from './SubstanceStub'\nexport * from './Substanceproduct'\nexport * from './Suggest'\nexport * from './SumehrContent'\nexport * from './SumehrExportInfo'\nexport * from './SumehrValidity'\nexport * from './SupplyProblem'\nexport * from './Suspension'\nexport * from './Tag'\nexport * from './Tarification'\nexport * from './Telecom'\nexport * from './TimeSeries'\nexport * from './TimeTable'\nexport * from './TimeTableHour'\nexport * from './TimeTableItem'\nexport * from './TokenWithGroup'\nexport * from './TypedValueObject'\nexport * from './Unit'\nexport * from './User'\nexport * from './UserAndHealthcareParty'\nexport * from './UserGroup'\nexport * from './Valorisation'\nexport * from './Verse'\nexport * from './VirtualForm'\nexport * from './VirtualIngredient'\nexport * from './Vmp'\nexport * from './VmpComponent'\nexport * from './VmpGroup'\nexport * from './VmpGroupStub'\nexport * from './VmpStub'\nexport * from './Vtm'\nexport * from './Wada'\nexport * from './Weekday'\n\nexport type EncryptedEntity =\n | AccessLog\n | Article\n | CalendarItem\n | Classification\n | Contact\n | Document\n | Form\n | HealthElement\n | Invoice\n | MaintenanceTask\n | Message\n | Patient\n | Receipt\nexport type EncryptedParentEntity = Message | Patient\n"]}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../icc-api/model/models.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccessLog } from './AccessLog'\nimport { Article } from './Article'\nimport { Classification } from './Classification'\nimport { Document } from './Document'\nimport { HealthElement } from './HealthElement'\nimport { Invoice } from './Invoice'\nimport { Form } from './Form'\nimport { Contact } from './Contact'\nimport { CalendarItem } from './CalendarItem'\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { Message } from './Message'\nimport { Receipt } from './Receipt'\nimport { Patient } from './Patient'\n\nexport * from './AbstractFilterCode'\nexport * from './AbstractFilterContact'\nexport * from './AbstractFilterDevice'\nexport * from './AbstractFilterHealthElement'\nexport * from './AbstractFilterHealthcareParty'\nexport * from './AbstractFilterInvoice'\nexport * from './AbstractFilterMaintenanceTask'\nexport * from './AbstractFilterPatient'\nexport * from './AbstractFilterService'\nexport * from './AbstractFilterUser'\nexport * from './AccessLog'\nexport * from './AddedDocument'\nexport * from './Address'\nexport * from './AdministrationQuantity'\nexport * from './Agenda'\nexport * from './AgreementAppendix'\nexport * from './Amp'\nexport * from './AmpComponent'\nexport * from './Ampp'\nexport * from './AmppComponent'\nexport * from './Annotation'\nexport * from './ApplicationSettings'\nexport * from './AppointmentTypeAndPlace'\nexport * from './Article'\nexport * from './Atc'\nexport * from './AttachmentMetadata'\nexport * from './AuthenticationResponse'\nexport * from './AuthenticationToken'\nexport * from './Basic'\nexport * from './Body'\nexport * from './BulkAttachmentUpdateOptions'\nexport * from './CalendarItem'\nexport * from './CalendarItemTag'\nexport * from './CalendarItemType'\nexport * from './CareTeamMember'\nexport * from './CareTeamMembership'\nexport * from './CheckSMFPatientResult'\nexport * from './Classification'\nexport * from './ClassificationTemplate'\nexport * from './Code'\nexport * from './CodeStub'\nexport * from './CodeType'\nexport * from './CommentedClassification'\nexport * from './Commercialization'\nexport * from './Company'\nexport * from './Contact'\nexport * from './Content'\nexport * from './Copayment'\nexport * from './Data'\nexport * from './DataAttachment'\nexport * from './DataOwnerRegistrationSuccess'\nexport * from './DataOwnerWithType'\nexport * from './DatabaseInfo'\nexport * from './DatabaseInitialisation'\nexport * from './DatabaseSynchronization'\nexport * from './Delegation'\nexport * from './DeletedAttachment'\nexport * from './Device'\nexport * from './DeviceType'\nexport * from './DiaryNoteExportInfo'\nexport * from './Dmpp'\nexport * from './DocIdentifier'\nexport * from './Document'\nexport * from './DocumentGroup'\nexport * from './DocumentTemplate'\nexport * from './Duration'\nexport * from './EIDItem'\nexport * from './Editor'\nexport * from './EfactInvoice'\nexport * from './Employer'\nexport * from './EmploymentInfo'\nexport * from './EntityReference'\nexport * from './EntityTemplate'\nexport * from './Episode'\nexport * from './FilterChainCode'\nexport * from './FilterChainContact'\nexport * from './FilterChainDevice'\nexport * from './FilterChainHealthElement'\nexport * from './FilterChainHealthcareParty'\nexport * from './FilterChainInvoice'\nexport * from './FilterChainMaintenanceTask'\nexport * from './FilterChainPatient'\nexport * from './FilterChainService'\nexport * from './FilterChainUser'\nexport * from './FinancialInstitutionInformation'\nexport * from './FlatRateTarification'\nexport * from './FlowItem'\nexport * from './Form'\nexport * from './FormColumn'\nexport * from './FormDataOption'\nexport * from './FormLayout'\nexport * from './FormLayoutData'\nexport * from './FormPlanning'\nexport * from './FormSection'\nexport * from './FormTemplate'\nexport * from './FormTemplateLayout'\nexport * from './Formula'\nexport * from './FrontEndMigration'\nexport * from './Group'\nexport * from './GroupDatabasesInfo'\nexport * from './GuiCode'\nexport * from './GuiCodeType'\nexport * from './GroupDeletionReport'\nexport * from './HealthElement'\nexport * from './HealthcareParty'\nexport * from './HealthcarePartyHistoryStatus'\nexport * from './IcureStub'\nexport * from './IdWithRev'\nexport * from './Identifier'\nexport * from './IdentityDocumentReader'\nexport * from './ImportMapping'\nexport * from './ImportResult'\nexport * from './IncapacityExportInfo'\nexport * from './IndexingInfo'\nexport * from './Ingredient'\nexport * from './Insurability'\nexport * from './Insurance'\nexport * from './Invoice'\nexport * from './InvoiceItem'\nexport * from './InvoiceSender'\nexport * from './InvoicesBatch'\nexport * from './InvoicingCode'\nexport * from './Keyword'\nexport * from './KeywordSubword'\nexport * from './LabelledOccurence'\nexport * from './LetterValue'\nexport * from './ListOfIds'\nexport * from './ListOfProperties'\nexport * from './LoginCredentials'\nexport * from './MaintenanceTask'\nexport * from './MapOfIds'\nexport * from './Measure'\nexport * from './MedexInfo'\nexport * from './MedicalHouseContract'\nexport * from './MedicalLocation'\nexport * from './Medication'\nexport * from './MedicationSchemeExportInfo'\nexport * from './Medicinalproduct'\nexport * from './Message'\nexport * from './MessageReadStatus'\nexport * from './MessageWithBatch'\nexport * from './MessagesReadStatusUpdate'\nexport * from './MimeAttachment'\nexport * from './Nmp'\nexport * from './NoGenericPrescriptionReason'\nexport * from './NoSwitchReason'\nexport * from './NumeratorRange'\nexport * from './PackagingType'\nexport * from './PaginatedDocumentKeyIdPairObject'\nexport * from './PaginatedListAccessLog'\nexport * from './PaginatedListAmp'\nexport * from './PaginatedListClassification'\nexport * from './PaginatedListClassificationTemplate'\nexport * from './PaginatedListCode'\nexport * from './PaginatedListContact'\nexport * from './PaginatedListDevice'\nexport * from './PaginatedListDocument'\nexport * from './PaginatedListEntityTemplate'\nexport * from './PaginatedListForm'\nexport * from './PaginatedListGroup'\nexport * from './PaginatedListHealthElement'\nexport * from './PaginatedListHealthcareParty'\nexport * from './PaginatedListInvoice'\nexport * from './PaginatedListMaintenanceTask'\nexport * from './PaginatedListMessage'\nexport * from './PaginatedListNmp'\nexport * from './PaginatedListPatient'\nexport * from './PaginatedListService'\nexport * from './PaginatedListString'\nexport * from './PaginatedListTarification'\nexport * from './PaginatedListUser'\nexport * from './PaginatedListVmp'\nexport * from './PaginatedListVmpGroup'\nexport * from './Paragraph'\nexport * from './ParagraphAgreement'\nexport * from './Part'\nexport * from './Partnership'\nexport * from './Patient'\nexport * from './PatientHealthCareParty'\nexport * from './Payment'\nexport * from './Periodicity'\nexport * from './Permission'\nexport * from './PermissionItem'\nexport * from './PersonName'\nexport * from './PharmaceuticalForm'\nexport * from './PharmaceuticalFormStub'\nexport * from './Place'\nexport * from './PlanOfAction'\nexport * from './Predicate'\nexport * from './Pricing'\nexport * from './PropertyStub'\nexport * from './PropertyTypeStub'\nexport * from './PublicKey'\nexport * from './Quantity'\nexport * from './Receipt'\nexport * from './ReferralPeriod'\nexport * from './RegimenItem'\nexport * from './RegistrationInformation'\nexport * from './RegistrationSuccess'\nexport * from './Reimbursement'\nexport * from './ReimbursementCriterion'\nexport * from './Remote'\nexport * from './RemoteAuthentication'\nexport * from './Renewal'\nexport * from './Replication'\nexport * from './ReplicateCommand'\nexport * from './ReplicationInfo'\nexport * from './ReplicationStats'\nexport * from './ReplicatorDocument'\nexport * from './ReplicatorResponse'\nexport * from './ResultInfo'\nexport * from './Right'\nexport * from './RouteOfAdministration'\nexport * from './SamText'\nexport * from './SamVersion'\nexport * from './SchoolingInfo'\nexport * from './Section'\nexport * from './Service'\nexport * from './ServiceLink'\nexport * from './SoftwareMedicalFileExport'\nexport * from './StandardSubstance'\nexport * from './StrengthRange'\nexport * from './StructureElement'\nexport * from './SubContact'\nexport * from './Substance'\nexport * from './SubstanceStub'\nexport * from './Substanceproduct'\nexport * from './Suggest'\nexport * from './SumehrContent'\nexport * from './SumehrExportInfo'\nexport * from './SumehrValidity'\nexport * from './SupplyProblem'\nexport * from './Suspension'\nexport * from './Tag'\nexport * from './Tarification'\nexport * from './Telecom'\nexport * from './TimeSeries'\nexport * from './TimeTable'\nexport * from './TimeTableHour'\nexport * from './TimeTableItem'\nexport * from './TokenWithGroup'\nexport * from './TypedValueObject'\nexport * from './Unit'\nexport * from './User'\nexport * from './UserAndHealthcareParty'\nexport * from './UserGroup'\nexport * from './Valorisation'\nexport * from './Verse'\nexport * from './VirtualForm'\nexport * from './VirtualIngredient'\nexport * from './Vmp'\nexport * from './VmpComponent'\nexport * from './VmpGroup'\nexport * from './VmpGroupStub'\nexport * from './VmpStub'\nexport * from './Vtm'\nexport * from './Wada'\nexport * from './Weekday'\n\nexport type EncryptedEntity =\n | AccessLog\n | Article\n | CalendarItem\n | Classification\n | Contact\n | Document\n | Form\n | HealthElement\n | Invoice\n | MaintenanceTask\n | Message\n | Patient\n | Receipt\nexport type EncryptedParentEntity = Message | Patient\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwtAuthService.js","sourceRoot":"","sources":["../../../icc-x-api/auth/JwtAuthService.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,+CAA2C;AAE3C,2EAAuE;AAEvE,oCAA8B;AAE9B,MAAa,cAAc;IAIzB,YAAoB,OAAmB,EAAU,QAAgB,EAAU,QAAgB;QAAvE,YAAO,GAAP,OAAO,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAQ;QAHnF,WAAM,GAAiB,IAAI,CAAA;QAC3B,oBAAe,GAAuD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEH,CAAC;IAEzF,cAAc;;YAClB,OAAO,IAAI,CAAC,eAAe;iBACxB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;gBAChC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC3C,+CAA+C;oBAC/C,6CAA6C;oBAE7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;wBAC7E,6BAA6B;wBAC7B,iCAAiC;wBACjC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;4BAC1B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;yBACnF;wBAED,OAAO,aAAa,CAAA;oBACtB,CAAC,CAAC,CAAA;iBACH;qBAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;oBACxB,MAAM,IAAI,CAAC,MAAM,CAAA;iBAClB;
|
|
1
|
+
{"version":3,"file":"JwtAuthService.js","sourceRoot":"","sources":["../../../icc-x-api/auth/JwtAuthService.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { IccAuthApi } from '../../icc-api'\nimport { LoginCredentials } from '../../icc-api/model/LoginCredentials'\nimport Header = XHR.Header\nimport { a2b } from '../utils'\n\nexport class JwtAuthService implements AuthService {\n private _error: Error | null = null\n private _currentPromise: Promise<{ authJwt?: string; refreshJwt?: string }> = Promise.resolve({})\n\n constructor(private authApi: IccAuthApi, private username: string, private password: string) {}\n\n async getAuthHeaders(): Promise<Array<Header>> {\n return this._currentPromise\n .then(({ authJwt, refreshJwt }) => {\n if (!authJwt || this._isJwtExpired(authJwt)) {\n // If it does not have the JWT, tries to get it\n // If the JWT is expired, tries to refresh it\n\n this._currentPromise = this._refreshAuthJwt(refreshJwt).then((updatedTokens) => {\n // If here the token is null,\n // it goes in a suspension status\n if (!updatedTokens.authJwt) {\n throw new Error('Your iCure back-end version does not support JWT authentication')\n }\n\n return updatedTokens\n })\n } else if (!!this._error) {\n throw this._error\n }\n return this._currentPromise\n })\n .then(({ authJwt }) => {\n return [new XHR.Header('Authorization', `Bearer ${authJwt}`)]\n })\n }\n\n private async _refreshAuthJwt(refreshJwt: string | undefined): Promise<{ authJwt?: string; refreshJwt?: string }> {\n // If I do not have a refresh JWT or the refresh JWT is expired,\n // I have to log in again\n if (!refreshJwt || this._isJwtExpired(refreshJwt)) {\n return this._loginAndGetTokens()\n } else {\n return this.authApi.refreshAuthenticationJWT(refreshJwt).then((refreshResponse) => ({\n authJwt: refreshResponse.token,\n refreshJwt: refreshJwt,\n }))\n }\n }\n\n private async _loginAndGetTokens(): Promise<{ authJwt?: string; refreshJwt?: string }> {\n return this.authApi\n .login(\n new LoginCredentials({\n username: this.username,\n password: this.password,\n })\n )\n .then((authResponse) => ({\n authJwt: authResponse.token,\n refreshJwt: authResponse.refreshToken,\n }))\n }\n\n private _isJwtExpired(jwt: string): boolean {\n const parts = jwt.split('.')\n if (parts.length !== 3) {\n return false\n }\n const payload = this._base64Decode(parts[1])\n return !('exp' in payload) || payload['exp'] * 1000 < new Date().getTime()\n }\n\n private _base64Decode(encodedString: string): any {\n return JSON.parse(a2b(encodedString))\n }\n\n invalidateHeader(error: Error): void {\n this._error = error\n }\n\n isInErrorState(): boolean {\n return !!this._error\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iCure Data Stack API Documentation
|
|
3
|
+
* The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
|
|
4
|
+
*
|
|
5
|
+
* OpenAPI spec version: v1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by the swagger code generator program.
|
|
9
|
+
* https://github.com/swagger-api/swagger-codegen.git
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
import { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient';
|
|
13
|
+
export declare class PatientByHcPartyAndAddressFilter extends AbstractFilterPatient {
|
|
14
|
+
$type: string;
|
|
15
|
+
constructor(json: JSON | any);
|
|
16
|
+
desc?: string;
|
|
17
|
+
searchString?: string;
|
|
18
|
+
healthcarePartyId?: string;
|
|
19
|
+
postalCode?: string;
|
|
20
|
+
houseNumber?: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PatientByHcPartyAndAddressFilter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* iCure Data Stack API Documentation
|
|
6
|
+
* The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
|
|
7
|
+
*
|
|
8
|
+
* OpenAPI spec version: v1
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by the swagger code generator program.
|
|
12
|
+
* https://github.com/swagger-api/swagger-codegen.git
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
const AbstractFilterPatient_1 = require("../../icc-api/model/AbstractFilterPatient");
|
|
16
|
+
class PatientByHcPartyAndAddressFilter extends AbstractFilterPatient_1.AbstractFilterPatient {
|
|
17
|
+
constructor(json) {
|
|
18
|
+
super(json);
|
|
19
|
+
this.$type = 'PatientByHcPartyAndAddressFilter';
|
|
20
|
+
Object.assign(this, json);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.PatientByHcPartyAndAddressFilter = PatientByHcPartyAndAddressFilter;
|
|
24
|
+
//# sourceMappingURL=PatientByHcPartyAndAddressFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatientByHcPartyAndAddressFilter.js","sourceRoot":"","sources":["../../../icc-x-api/filters/PatientByHcPartyAndAddressFilter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,qFAAiF;AAEjF,MAAa,gCAAiC,SAAQ,6CAAqB;IAEzE,YAAY,IAAgB;QAC1B,KAAK,CAAC,IAAI,CAAC,CAAA;QAFb,UAAK,GAAW,kCAAkC,CAAA;QAIhD,MAAM,CAAC,MAAM,CAAC,IAAwC,EAAE,IAAI,CAAC,CAAA;IAC/D,CAAC;CAOF;AAbD,4EAaC","sourcesContent":["/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndAddressFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndAddressFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndAddressFilter, json)\n }\n\n desc?: string\n searchString?: string\n healthcarePartyId?: string\n postalCode?: string\n houseNumber?: string\n}\n"]}
|
|
@@ -34,6 +34,7 @@ export * from './HealthcarePartyByTagCodeFilter';
|
|
|
34
34
|
export * from './IntersectionFilter';
|
|
35
35
|
export * from './InvoiceByHcPartyCodeDateFilter';
|
|
36
36
|
export * from './PatientByHcPartyAndActiveFilter';
|
|
37
|
+
export * from './PatientByHcPartyAndAddressFilter';
|
|
37
38
|
export * from './PatientByHcPartyAndExternalIdFilter';
|
|
38
39
|
export * from './PatientByHcPartyAndIdentifiersFilter';
|
|
39
40
|
export * from './PatientByHcPartyAndSsinFilter';
|
|
@@ -101,6 +102,7 @@ declare class PatientFilterBuilder extends FilterBuilder<Patient> {
|
|
|
101
102
|
all(): PatientFilterBuilder;
|
|
102
103
|
activePatients(): PatientFilterBuilder;
|
|
103
104
|
inactivePatients(): PatientFilterBuilder;
|
|
105
|
+
byAddress(searchString?: string, postalCode?: string, houseNumber?: string): PatientFilterBuilder;
|
|
104
106
|
withExternalId(externalId: string): PatientFilterBuilder;
|
|
105
107
|
withSsins(ssins: string[]): PatientFilterBuilder;
|
|
106
108
|
withDateOfBirthBetween(from?: number, to?: number): PatientFilterBuilder;
|
|
@@ -20,6 +20,7 @@ const IntersectionFilter_1 = require("./IntersectionFilter");
|
|
|
20
20
|
const UnionFilter_1 = require("./UnionFilter");
|
|
21
21
|
const ComplementFilter_1 = require("./ComplementFilter");
|
|
22
22
|
const PatientByHcPartyAndActiveFilter_1 = require("./PatientByHcPartyAndActiveFilter");
|
|
23
|
+
const PatientByHcPartyAndAddressFilter_1 = require("./PatientByHcPartyAndAddressFilter");
|
|
23
24
|
const PatientByHcPartyAndExternalIdFilter_1 = require("./PatientByHcPartyAndExternalIdFilter");
|
|
24
25
|
const PatientByHcPartyAndSsinsFilter_1 = require("./PatientByHcPartyAndSsinsFilter");
|
|
25
26
|
const PatientByHcPartyDateOfBirthBetweenFilter_1 = require("./PatientByHcPartyDateOfBirthBetweenFilter");
|
|
@@ -55,6 +56,7 @@ __exportStar(require("./HealthcarePartyByTagCodeFilter"), exports);
|
|
|
55
56
|
__exportStar(require("./IntersectionFilter"), exports);
|
|
56
57
|
__exportStar(require("./InvoiceByHcPartyCodeDateFilter"), exports);
|
|
57
58
|
__exportStar(require("./PatientByHcPartyAndActiveFilter"), exports);
|
|
59
|
+
__exportStar(require("./PatientByHcPartyAndAddressFilter"), exports);
|
|
58
60
|
__exportStar(require("./PatientByHcPartyAndExternalIdFilter"), exports);
|
|
59
61
|
__exportStar(require("./PatientByHcPartyAndIdentifiersFilter"), exports);
|
|
60
62
|
__exportStar(require("./PatientByHcPartyAndSsinFilter"), exports);
|
|
@@ -177,6 +179,14 @@ class PatientFilterBuilder extends FilterBuilder {
|
|
|
177
179
|
inactivePatients() {
|
|
178
180
|
return this.composer(this, new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter_1.PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: false }), this.hcpId));
|
|
179
181
|
}
|
|
182
|
+
byAddress(searchString, postalCode, houseNumber) {
|
|
183
|
+
return this.composer(this, new PatientFilterBuilder(() => new PatientByHcPartyAndAddressFilter_1.PatientByHcPartyAndAddressFilter({
|
|
184
|
+
healthcarePartyId: this.hcpId,
|
|
185
|
+
searchString,
|
|
186
|
+
postalCode,
|
|
187
|
+
houseNumber,
|
|
188
|
+
}), this.hcpId));
|
|
189
|
+
}
|
|
180
190
|
withExternalId(externalId) {
|
|
181
191
|
return this.composer(this, new PatientFilterBuilder(() => new PatientByHcPartyAndExternalIdFilter_1.PatientByHcPartyAndExternalIdFilter({
|
|
182
192
|
healthcarePartyId: this.hcpId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../icc-x-api/filters/filters.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConstantFilter } from './ConstantFilter'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\nimport { Service } from '../../icc-api/model/Service'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { IntersectionFilter } from './IntersectionFilter'\nimport { UnionFilter } from './UnionFilter'\nimport { ComplementFilter } from './ComplementFilter'\nimport { PatientByHcPartyAndActiveFilter } from './PatientByHcPartyAndActiveFilter'\nimport { PatientByHcPartyAndExternalIdFilter } from './PatientByHcPartyAndExternalIdFilter'\nimport { PatientByHcPartyAndSsinsFilter } from './PatientByHcPartyAndSsinsFilter'\nimport { PatientByHcPartyDateOfBirthBetweenFilter } from './PatientByHcPartyDateOfBirthBetweenFilter'\nimport { PatientByHcPartyDateOfBirthFilter } from './PatientByHcPartyDateOfBirthFilter'\n\nimport { add, format } from 'date-fns'\nimport { PatientByHcPartyFilter } from './PatientByHcPartyFilter'\nimport { PatientByHcPartyGenderEducationProfession } from './PatientByHcPartyGenderEducationProfession'\nimport { PatientByIdsFilter } from './PatientByIdsFilter'\nimport { PatientByHcPartyNameContainsFuzzyFilter } from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport { ContactByHcPartyFilter } from './ContactByHcPartyFilter'\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllUsersFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeLabelLanguageFilter'\nexport * from './ComplementFilter'\nexport * from './ConstantFilter'\nexport * from './ContactByHcPartyFilter'\nexport * from './ContactByHcPartyPatientTagCodeDateFilter'\nexport * from './ContactByHcPartyTagCodeDateFilter'\nexport * from './ContactByServiceIdsFilter'\nexport * from './DeviceByHcPartyFilter'\nexport * from './DeviceByIdsFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './IntersectionFilter'\nexport * from './InvoiceByHcPartyCodeDateFilter'\nexport * from './PatientByHcPartyAndActiveFilter'\nexport * from './PatientByHcPartyAndExternalIdFilter'\nexport * from './PatientByHcPartyAndIdentifiersFilter'\nexport * from './PatientByHcPartyAndSsinFilter'\nexport * from './PatientByHcPartyAndSsinsFilter'\nexport * from './PatientByHcPartyDateOfBirthBetweenFilter'\nexport * from './PatientByHcPartyDateOfBirthFilter'\nexport * from './PatientByHcPartyFilter'\nexport * from './PatientByHcPartyGenderEducationProfession'\nexport * from './PatientByHcPartyNameContainsFuzzyFilter'\nexport * from './PatientByHcPartyNameFilter'\nexport * from './PatientByIdsFilter'\nexport * from './ServiceByContactsAndSubcontactsFilter'\nexport * from './ServiceByHcPartyFilter'\nexport * from './ServiceByHcPartyIdentifiersFilter'\nexport * from './ServiceByHcPartyHealthElementIdsFilter'\nexport * from './ServiceByHcPartyTagCodeDateFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter<T> = T extends Patient\n ? AbstractFilterPatient | ConstantFilter<Patient> | IntersectionFilter<Patient> | UnionFilter<Patient> | ComplementFilter<Patient>\n : T extends Contact\n ? AbstractFilterContact | ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n : T extends Service\n ? AbstractFilterService | ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n : ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n\nconst f: AbstractFilterContact = new ComplementFilter<Contact>(new ContactByHcPartyFilter({}), new ContactByHcPartyFilter({}))\n\nabstract class FilterBuilder<T> {\n // This is the current generator for the filter, when we call build(), filterProvider() is going to be called\n filterProvider?: () => AbstractFilter<T>\n // This is the method that is called each time we chain a filter to another filter. The default behaviour is to\n // return a FilterBuilder with the provider set to the last element in the chain, except when we use combination\n // operators like or()/and()/… . After one of those, the composer is set to a function that will return a FilterBuilder\n // that combines the existing filterBuilder with the filter definition we just added.\n composer: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T> = (\n thisFilterBuilder: FilterBuilder<T>,\n otherFilterBuilder: FilterBuilder<T>\n ) => otherFilterBuilder\n\n protected constructor(\n filterProvider?: () => AbstractFilter<T>,\n composer?: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T>\n ) {\n this.filterProvider = filterProvider\n composer && (this.composer = composer)\n }\n\n abstract build(): AbstractFilter<T>\n\n abstract clone(\n filterProvider?: () => AbstractFilter<T>,\n composer?: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T>\n ): FilterBuilder<T>\n\n listOf(elements: T[]): FilterBuilder<T> {\n return this.clone(() => new ConstantFilter<T>(elements) as AbstractFilter<T>)\n }\n\n private makeLazyLeftRightFilterBuilder(\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () => AbstractFilter<T>\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const leftHandFilterBuilder: FilterBuilder<T> = this\n const leftHandFilter = leftHandFilterBuilder.build() // Freeze the leftHand filter\n\n return leftHandFilterBuilder.filterProvider\n ? this.clone(\n undefined, //filter provider is indeterminate until we have performed a composition\n (unused: FilterBuilder<T>, rightHandFilterBuilder: FilterBuilder<T>) => {\n // because we freeze the leftHand in the state it is right now, we are not going to use its value when the composition occurs\n const rightHandFilter = rightHandFilterBuilder.build()\n\n return rightHandFilter\n ? this.clone(leftHandRightHandFiltersCombiner(leftHandFilter, rightHandFilter), rightHandFilterBuilder.composer)\n : rightHandFilterBuilder //Can this happen ?\n }\n )\n : this\n }\n\n private makeEagerLeftRightFilterBuilder(\n rightHandFilterBuilderFactory: (it: FilterBuilder<T>) => FilterBuilder<T>,\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () => AbstractFilter<T>\n ) {\n const rightHandFilterBuilder = rightHandFilterBuilderFactory(this)\n return this.filterProvider ? this.clone(leftHandRightHandFiltersCombiner(this.build(), rightHandFilterBuilder.build())) : this\n }\n\n /**\n * There are two ways of doing and, or, …\n *\n * 1) for (...) or (...) we use the syntax ... .or((builder) => builder...)\n * ex: youngerThan(65).or((b) => b.olderThan(18).and().gender(M)) means any gender < 65 or male > 18\n * 2) for ((...) or ...) we use the syntax ... .or().…\n * ex: youngerThan(65).or().olderThan(18).and().gender(M) means males between 18 and 65\n *\n * When 1) is used we do not have to wait for anything to provide a resolved builder that can later be combined with extra elements in the chain.\n * In other words, we can build the current filter chain up to the or/and/… and we can build what is inside the or/and/… brackets and we can set\n * the filterProvider of the returned Builder to () => UnionFilter([leftHand.build(), innerBrackets.build()]).\n *\n * When 2) is used, things get more tricky because we will have to do an or/and/… between what we have on the leftHand and with what we do not have\n * yet on the right hand. What we do in that situation is to set the filterProvider() to undefined because calling build() without having provided a\n * rightHand doesn't make sense. We set a composer that is going to be called the next time we chain a filter.\n *\n * @param filterBuilderFactory\n */\n\n and(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new IntersectionFilter<T>([leftHandFilter, rightHandFilter]) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n or(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new UnionFilter<T>([leftHandFilter, rightHandFilter]) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n minus(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new ComplementFilter<T>(leftHandFilter, rightHandFilter) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n}\n\nclass PatientFilterBuilder extends FilterBuilder<Patient> {\n hcpId?: string\n\n constructor(\n filterProvider?: () => AbstractFilter<Patient>,\n hcpId?: string,\n composer?: (thisFilterBuilder: FilterBuilder<Patient>, otherFilterBuilder: FilterBuilder<Patient>) => FilterBuilder<Patient>\n ) {\n super(filterProvider, composer)\n this.hcpId = hcpId\n }\n\n clone(\n filterProvider?: () => AbstractFilter<Patient>,\n composer?: (thisFilterBuilder: FilterBuilder<Patient>, otherFilterBuilder: FilterBuilder<Patient>) => FilterBuilder<Patient>\n ): FilterBuilder<Patient> {\n return new PatientFilterBuilder(filterProvider, this.hcpId, composer)\n }\n\n listOf(elements: Patient[]): PatientFilterBuilder {\n return new PatientFilterBuilder(() => new ConstantFilter<Patient>(elements) as AbstractFilter<Patient>)\n }\n\n and(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.and(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n or(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.or(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n minus(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.minus(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n forHcp(hcpId: string): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(this.filterProvider, hcpId)) as PatientFilterBuilder\n }\n\n all(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyFilter({ healthcarePartyId: this.hcpId }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n activePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: true }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n inactivePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: false }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n withExternalId(externalId: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndExternalIdFilter({\n healthcarePartyId: this.hcpId,\n externalId: externalId,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withSsins(ssins: string[]): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndSsinsFilter({ healthcarePartyId: this.hcpId, ssins: ssins }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n withDateOfBirthBetween(from?: number, to?: number): PatientFilterBuilder {\n return this.composer(\n this,\n this.clone(\n () =>\n new PatientByHcPartyDateOfBirthBetweenFilter({\n healthcarePartyId: this.hcpId,\n minDateOfBirth: from,\n maxDateOfBirth: to,\n })\n )\n ) as PatientFilterBuilder\n }\n\n byDateOfBirth(dateOfBirth: number): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyDateOfBirthFilter({\n healthcarePartyId: this.hcpId,\n dateOfBirth: dateOfBirth,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n olderThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(10000101, parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')))\n }\n\n youngerThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')), 99991231)\n }\n\n byGenderEducationProfession(gender?: GenderEnum, education?: string, profession?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyGenderEducationProfession({\n healthcarePartyId: this.hcpId,\n gender: gender,\n education: education,\n profession: profession,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n byIds(ids: string[]): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(() => new PatientByIdsFilter({ ids: ids }), this.hcpId)) as PatientFilterBuilder\n }\n\n searchByName(name: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyNameContainsFuzzyFilter({\n healthcarePartyId: this.hcpId,\n searchString: name,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n build(): AbstractFilter<Patient> {\n return this.filterProvider?.() || this.all().build()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../icc-x-api/filters/filters.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConstantFilter } from './ConstantFilter'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\nimport { Service } from '../../icc-api/model/Service'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { IntersectionFilter } from './IntersectionFilter'\nimport { UnionFilter } from './UnionFilter'\nimport { ComplementFilter } from './ComplementFilter'\nimport { PatientByHcPartyAndActiveFilter } from './PatientByHcPartyAndActiveFilter'\nimport { PatientByHcPartyAndAddressFilter } from './PatientByHcPartyAndAddressFilter'\nimport { PatientByHcPartyAndExternalIdFilter } from './PatientByHcPartyAndExternalIdFilter'\nimport { PatientByHcPartyAndSsinsFilter } from './PatientByHcPartyAndSsinsFilter'\nimport { PatientByHcPartyDateOfBirthBetweenFilter } from './PatientByHcPartyDateOfBirthBetweenFilter'\nimport { PatientByHcPartyDateOfBirthFilter } from './PatientByHcPartyDateOfBirthFilter'\n\nimport { add, format } from 'date-fns'\nimport { PatientByHcPartyFilter } from './PatientByHcPartyFilter'\nimport { PatientByHcPartyGenderEducationProfession } from './PatientByHcPartyGenderEducationProfession'\nimport { PatientByIdsFilter } from './PatientByIdsFilter'\nimport { PatientByHcPartyNameContainsFuzzyFilter } from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport { ContactByHcPartyFilter } from './ContactByHcPartyFilter'\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllUsersFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeLabelLanguageFilter'\nexport * from './ComplementFilter'\nexport * from './ConstantFilter'\nexport * from './ContactByHcPartyFilter'\nexport * from './ContactByHcPartyPatientTagCodeDateFilter'\nexport * from './ContactByHcPartyTagCodeDateFilter'\nexport * from './ContactByServiceIdsFilter'\nexport * from './DeviceByHcPartyFilter'\nexport * from './DeviceByIdsFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './IntersectionFilter'\nexport * from './InvoiceByHcPartyCodeDateFilter'\nexport * from './PatientByHcPartyAndActiveFilter'\nexport * from './PatientByHcPartyAndAddressFilter'\nexport * from './PatientByHcPartyAndExternalIdFilter'\nexport * from './PatientByHcPartyAndIdentifiersFilter'\nexport * from './PatientByHcPartyAndSsinFilter'\nexport * from './PatientByHcPartyAndSsinsFilter'\nexport * from './PatientByHcPartyDateOfBirthBetweenFilter'\nexport * from './PatientByHcPartyDateOfBirthFilter'\nexport * from './PatientByHcPartyFilter'\nexport * from './PatientByHcPartyGenderEducationProfession'\nexport * from './PatientByHcPartyNameContainsFuzzyFilter'\nexport * from './PatientByHcPartyNameFilter'\nexport * from './PatientByIdsFilter'\nexport * from './ServiceByContactsAndSubcontactsFilter'\nexport * from './ServiceByHcPartyFilter'\nexport * from './ServiceByHcPartyIdentifiersFilter'\nexport * from './ServiceByHcPartyHealthElementIdsFilter'\nexport * from './ServiceByHcPartyTagCodeDateFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter<T> = T extends Patient\n ? AbstractFilterPatient | ConstantFilter<Patient> | IntersectionFilter<Patient> | UnionFilter<Patient> | ComplementFilter<Patient>\n : T extends Contact\n ? AbstractFilterContact | ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n : T extends Service\n ? AbstractFilterService | ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n : ConstantFilter<T> | IntersectionFilter<T> | UnionFilter<T> | ComplementFilter<T>\n\nconst f: AbstractFilterContact = new ComplementFilter<Contact>(new ContactByHcPartyFilter({}), new ContactByHcPartyFilter({}))\n\nabstract class FilterBuilder<T> {\n // This is the current generator for the filter, when we call build(), filterProvider() is going to be called\n filterProvider?: () => AbstractFilter<T>\n // This is the method that is called each time we chain a filter to another filter. The default behaviour is to\n // return a FilterBuilder with the provider set to the last element in the chain, except when we use combination\n // operators like or()/and()/… . After one of those, the composer is set to a function that will return a FilterBuilder\n // that combines the existing filterBuilder with the filter definition we just added.\n composer: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T> = (\n thisFilterBuilder: FilterBuilder<T>,\n otherFilterBuilder: FilterBuilder<T>\n ) => otherFilterBuilder\n\n protected constructor(\n filterProvider?: () => AbstractFilter<T>,\n composer?: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T>\n ) {\n this.filterProvider = filterProvider\n composer && (this.composer = composer)\n }\n\n abstract build(): AbstractFilter<T>\n\n abstract clone(\n filterProvider?: () => AbstractFilter<T>,\n composer?: (thisFilterBuilder: FilterBuilder<T>, otherFilterBuilder: FilterBuilder<T>) => FilterBuilder<T>\n ): FilterBuilder<T>\n\n listOf(elements: T[]): FilterBuilder<T> {\n return this.clone(() => new ConstantFilter<T>(elements) as AbstractFilter<T>)\n }\n\n private makeLazyLeftRightFilterBuilder(\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () => AbstractFilter<T>\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const leftHandFilterBuilder: FilterBuilder<T> = this\n const leftHandFilter = leftHandFilterBuilder.build() // Freeze the leftHand filter\n\n return leftHandFilterBuilder.filterProvider\n ? this.clone(\n undefined, //filter provider is indeterminate until we have performed a composition\n (unused: FilterBuilder<T>, rightHandFilterBuilder: FilterBuilder<T>) => {\n // because we freeze the leftHand in the state it is right now, we are not going to use its value when the composition occurs\n const rightHandFilter = rightHandFilterBuilder.build()\n\n return rightHandFilter\n ? this.clone(leftHandRightHandFiltersCombiner(leftHandFilter, rightHandFilter), rightHandFilterBuilder.composer)\n : rightHandFilterBuilder //Can this happen ?\n }\n )\n : this\n }\n\n private makeEagerLeftRightFilterBuilder(\n rightHandFilterBuilderFactory: (it: FilterBuilder<T>) => FilterBuilder<T>,\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () => AbstractFilter<T>\n ) {\n const rightHandFilterBuilder = rightHandFilterBuilderFactory(this)\n return this.filterProvider ? this.clone(leftHandRightHandFiltersCombiner(this.build(), rightHandFilterBuilder.build())) : this\n }\n\n /**\n * There are two ways of doing and, or, …\n *\n * 1) for (...) or (...) we use the syntax ... .or((builder) => builder...)\n * ex: youngerThan(65).or((b) => b.olderThan(18).and().gender(M)) means any gender < 65 or male > 18\n * 2) for ((...) or ...) we use the syntax ... .or().…\n * ex: youngerThan(65).or().olderThan(18).and().gender(M) means males between 18 and 65\n *\n * When 1) is used we do not have to wait for anything to provide a resolved builder that can later be combined with extra elements in the chain.\n * In other words, we can build the current filter chain up to the or/and/… and we can build what is inside the or/and/… brackets and we can set\n * the filterProvider of the returned Builder to () => UnionFilter([leftHand.build(), innerBrackets.build()]).\n *\n * When 2) is used, things get more tricky because we will have to do an or/and/… between what we have on the leftHand and with what we do not have\n * yet on the right hand. What we do in that situation is to set the filterProvider() to undefined because calling build() without having provided a\n * rightHand doesn't make sense. We set a composer that is going to be called the next time we chain a filter.\n *\n * @param filterBuilderFactory\n */\n\n and(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new IntersectionFilter<T>([leftHandFilter, rightHandFilter]) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n or(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new UnionFilter<T>([leftHandFilter, rightHandFilter]) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n minus(filterBuilderFactory?: (it: FilterBuilder<T>) => FilterBuilder<T>): FilterBuilder<T> {\n const combiner = (leftHandFilter: AbstractFilter<T>, rightHandFilter: AbstractFilter<T>) => () =>\n new ComplementFilter<T>(leftHandFilter, rightHandFilter) as AbstractFilter<T>\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n}\n\nclass PatientFilterBuilder extends FilterBuilder<Patient> {\n hcpId?: string\n\n constructor(\n filterProvider?: () => AbstractFilter<Patient>,\n hcpId?: string,\n composer?: (thisFilterBuilder: FilterBuilder<Patient>, otherFilterBuilder: FilterBuilder<Patient>) => FilterBuilder<Patient>\n ) {\n super(filterProvider, composer)\n this.hcpId = hcpId\n }\n\n clone(\n filterProvider?: () => AbstractFilter<Patient>,\n composer?: (thisFilterBuilder: FilterBuilder<Patient>, otherFilterBuilder: FilterBuilder<Patient>) => FilterBuilder<Patient>\n ): FilterBuilder<Patient> {\n return new PatientFilterBuilder(filterProvider, this.hcpId, composer)\n }\n\n listOf(elements: Patient[]): PatientFilterBuilder {\n return new PatientFilterBuilder(() => new ConstantFilter<Patient>(elements) as AbstractFilter<Patient>)\n }\n\n and(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.and(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n or(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.or(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n minus(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.minus(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n forHcp(hcpId: string): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(this.filterProvider, hcpId)) as PatientFilterBuilder\n }\n\n all(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyFilter({ healthcarePartyId: this.hcpId }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n activePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: true }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n inactivePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: false }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n byAddress(searchString?: string, postalCode?: string, houseNumber?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndAddressFilter({\n healthcarePartyId: this.hcpId,\n searchString,\n postalCode,\n houseNumber,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withExternalId(externalId: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndExternalIdFilter({\n healthcarePartyId: this.hcpId,\n externalId: externalId,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withSsins(ssins: string[]): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndSsinsFilter({ healthcarePartyId: this.hcpId, ssins: ssins }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n withDateOfBirthBetween(from?: number, to?: number): PatientFilterBuilder {\n return this.composer(\n this,\n this.clone(\n () =>\n new PatientByHcPartyDateOfBirthBetweenFilter({\n healthcarePartyId: this.hcpId,\n minDateOfBirth: from,\n maxDateOfBirth: to,\n })\n )\n ) as PatientFilterBuilder\n }\n\n byDateOfBirth(dateOfBirth: number): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyDateOfBirthFilter({\n healthcarePartyId: this.hcpId,\n dateOfBirth: dateOfBirth,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n olderThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(10000101, parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')))\n }\n\n youngerThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')), 99991231)\n }\n\n byGenderEducationProfession(gender?: GenderEnum, education?: string, profession?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyGenderEducationProfession({\n healthcarePartyId: this.hcpId,\n gender: gender,\n education: education,\n profession: profession,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n byIds(ids: string[]): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(() => new PatientByIdsFilter({ ids: ids }), this.hcpId)) as PatientFilterBuilder\n }\n\n searchByName(name: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyNameContainsFuzzyFilter({\n healthcarePartyId: this.hcpId,\n searchString: name,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n build(): AbstractFilter<Patient> {\n return this.filterProvider?.() || this.all().build()\n }\n}\n"]}
|
|
@@ -30,9 +30,11 @@ export declare class IccAccesslogXApi extends IccAccesslogApi {
|
|
|
30
30
|
* @param hcpartyId
|
|
31
31
|
* @param patient (Promise)
|
|
32
32
|
* @param keepObsoleteVersions
|
|
33
|
+
* @param usingPost
|
|
33
34
|
*/
|
|
34
|
-
findBy(hcpartyId: string, patient: models.Patient): Promise<any>;
|
|
35
|
+
findBy(hcpartyId: string, patient: models.Patient, usingPost?: boolean): Promise<any>;
|
|
35
36
|
findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog> | any>;
|
|
37
|
+
findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise<Array<AccessLog> | any>;
|
|
36
38
|
decrypt(hcpId: string, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>>;
|
|
37
39
|
initEncryptionKeys(user: models.User, accessLog: models.AccessLog): Promise<models.AccessLog>;
|
|
38
40
|
encrypt(user: models.User, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>>;
|
|
@@ -74,17 +74,23 @@ class IccAccesslogXApi extends icc_api_1.IccAccesslogApi {
|
|
|
74
74
|
* @param hcpartyId
|
|
75
75
|
* @param patient (Promise)
|
|
76
76
|
* @param keepObsoleteVersions
|
|
77
|
+
* @param usingPost
|
|
77
78
|
*/
|
|
78
|
-
findBy(hcpartyId, patient) {
|
|
79
|
+
findBy(hcpartyId, patient, usingPost = false) {
|
|
79
80
|
return this.crypto
|
|
80
81
|
.extractDelegationsSFKs(patient, hcpartyId)
|
|
81
82
|
.then((secretForeignKeys) => secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0
|
|
82
|
-
?
|
|
83
|
+
? (usingPost ?
|
|
84
|
+
this.findByHCPartyPatientSecretFKeysArray(secretForeignKeys.hcpartyId, _.uniq(secretForeignKeys.extractedKeys)) :
|
|
85
|
+
this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId, _.uniq(secretForeignKeys.extractedKeys).join(',')))
|
|
83
86
|
: Promise.resolve([]));
|
|
84
87
|
}
|
|
85
88
|
findByHCPartyPatientSecretFKeys(hcPartyId, secretFKeys) {
|
|
86
89
|
return super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs));
|
|
87
90
|
}
|
|
91
|
+
findByHCPartyPatientSecretFKeysArray(hcPartyId, secretFKeys) {
|
|
92
|
+
return super.findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs));
|
|
93
|
+
}
|
|
88
94
|
decrypt(hcpId, accessLogs) {
|
|
89
95
|
//First check that we have no dangling delegation
|
|
90
96
|
return Promise.all(accessLogs.map((accessLog) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icc-accesslog-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-accesslog-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, PaginatedListAccessLog } from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi {\n crypto: IccCryptoXApi\n cryptedKeys = ['detail', 'objectId']\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, h: any) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n const accessslog = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.AccessLog',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n date: +new Date(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n user: user.id,\n patientId: patient.id,\n accessType: 'USER_ACCESS',\n },\n h || {}\n )\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(accessslog, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(accessslog, dataOwnerId!)\n\n _.extend(accessslog, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(accessslog)\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then(() =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, accessslog, dataOwnerId!, delegateId, dels.secretId, eks.secretId).catch((e) => {\n console.log(e)\n return accessslog\n })\n ))\n )\n return promise\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n */\n\n findBy(hcpartyId: string, patient: models.Patient) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(','))\n : Promise.resolve([])\n )\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog> | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n decrypt(hcpId: string, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n accessLogs.map((accessLog) => {\n return accessLog.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n accessLog.id!,\n _.size(accessLog.encryptionKeys) ? accessLog.encryptionKeys! : accessLog.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n //console.log(\"Cannot decrypt contact\", ctc.id)\n return Promise.resolve(accessLog)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(accessLog, (ec) =>\n this.crypto.AES.decrypt(key, ec).then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse access log', accessLog.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n )\n )\n })\n : Promise.resolve(accessLog)\n })\n )\n }\n\n initEncryptionKeys(user: models.User, accessLog: models.AccessLog): Promise<models.AccessLog> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(accessLog, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(accessLog, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((accessLog) =>\n this.crypto.appendEncryptionKeys(accessLog, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n return Promise.all(\n accessLogs.map((accessLog) =>\n (accessLog.encryptionKeys && Object.keys(accessLog.encryptionKeys).length\n ? Promise.resolve(accessLog)\n : this.initEncryptionKeys(user, accessLog)\n )\n .then((accessLog: AccessLog) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.id!, accessLog.encryptionKeys!)\n )\n .then(async (eks: { extractedKeys: Array<string>; hcpartyId: string }) => {\n const rawKey = eks.extractedKeys[0].replace(/-/g, '')\n const key = await this.crypto.AES.importKey('raw', hex2ua(rawKey))\n return crypt(\n accessLog,\n (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey),\n this.cryptedKeys\n )\n })\n )\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise<models.AccessLog | any> {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<PaginatedListAccessLog> {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | null> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : null\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<models.AccessLog | any> {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise<models.AccessLog[]> {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.extractCryptedFKs(decryptedLog, user.healthcarePartyId as string).then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys.extractedKeys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"icc-accesslog-x-api.js","sourceRoot":"","sources":["../../icc-x-api/icc-accesslog-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, PaginatedListAccessLog } from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport { crypt, decrypt, hex2ua, ua2utf8, utf8_2ua } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi {\n crypto: IccCryptoXApi\n cryptedKeys = ['detail', 'objectId']\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise<Response> = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n newInstance(user: models.User, patient: models.Patient, h: any) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n const accessslog = _.assign(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.AccessLog',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n date: +new Date(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n user: user.id,\n patientId: patient.id,\n accessType: 'USER_ACCESS',\n },\n h || {}\n )\n\n return this.crypto.extractDelegationsSFKs(patient, dataOwnerId).then(async (secretForeignKeys) => {\n const dels = await this.crypto.initObjectDelegations(accessslog, patient, dataOwnerId!, secretForeignKeys.extractedKeys[0])\n const eks = await this.crypto.initEncryptionKeys(accessslog, dataOwnerId!)\n\n _.extend(accessslog, {\n delegations: dels.delegations,\n cryptedForeignKeys: dels.cryptedForeignKeys,\n secretForeignKeys: dels.secretForeignKeys,\n encryptionKeys: eks.encryptionKeys,\n })\n\n let promise = Promise.resolve(accessslog)\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then(() =>\n this.crypto.addDelegationsAndEncryptionKeys(patient, accessslog, dataOwnerId!, delegateId, dels.secretId, eks.secretId).catch((e) => {\n console.log(e)\n return accessslog\n })\n ))\n )\n return promise\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n * @param usingPost\n */\n\n findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n return this.crypto\n .extractDelegationsSFKs(patient, hcpartyId)\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.extractedKeys && secretForeignKeys.extractedKeys.length > 0\n ? (usingPost ?\n this.findByHCPartyPatientSecretFKeysArray(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys)) :\n this.findByHCPartyPatientSecretFKeys(secretForeignKeys.hcpartyId!, _.uniq(secretForeignKeys.extractedKeys).join(',')))\n : Promise.resolve([])\n )\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise<Array<AccessLog> | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise<Array<AccessLog> | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n decrypt(hcpId: string, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n //First check that we have no dangling delegation\n\n return Promise.all(\n accessLogs.map((accessLog) => {\n return accessLog.encryptedSelf\n ? this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpId!,\n accessLog.id!,\n _.size(accessLog.encryptionKeys) ? accessLog.encryptionKeys! : accessLog.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n //console.log(\"Cannot decrypt contact\", ctc.id)\n return Promise.resolve(accessLog)\n }\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, ''))).then((key) =>\n decrypt(accessLog, (ec) =>\n this.crypto.AES.decrypt(key, ec).then((dec) => {\n const jsonContent = dec && ua2utf8(dec)\n try {\n return JSON.parse(jsonContent)\n } catch (e) {\n console.log('Cannot parse access log', accessLog.id, jsonContent || 'Invalid content')\n return {}\n }\n })\n )\n )\n })\n : Promise.resolve(accessLog)\n })\n )\n }\n\n initEncryptionKeys(user: models.User, accessLog: models.AccessLog): Promise<models.AccessLog> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerOf(user)\n\n return this.crypto.initEncryptionKeys(accessLog, dataOwnerId!).then((eks) => {\n let promise = Promise.resolve(\n _.extend(accessLog, {\n encryptionKeys: eks.encryptionKeys,\n })\n )\n ;(user.autoDelegations ? (user.autoDelegations.all || []).concat(user.autoDelegations.medicalInformation || []) : []).forEach(\n (delegateId) =>\n (promise = promise.then((accessLog) =>\n this.crypto.appendEncryptionKeys(accessLog, dataOwnerId!, delegateId, eks.secretId).then((extraEks) => {\n return _.extend(extraEks.modifiedObject, {\n encryptionKeys: extraEks.encryptionKeys,\n })\n })\n ))\n )\n return promise\n })\n }\n\n encrypt(user: models.User, accessLogs: Array<models.AccessLog>): Promise<Array<models.AccessLog>> {\n return Promise.all(\n accessLogs.map((accessLog) =>\n (accessLog.encryptionKeys && Object.keys(accessLog.encryptionKeys).length\n ? Promise.resolve(accessLog)\n : this.initEncryptionKeys(user, accessLog)\n )\n .then((accessLog: AccessLog) =>\n this.crypto.extractKeysFromDelegationsForHcpHierarchy(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.id!, accessLog.encryptionKeys!)\n )\n .then(async (eks: { extractedKeys: Array<string>; hcpartyId: string }) => {\n const rawKey = eks.extractedKeys[0].replace(/-/g, '')\n const key = await this.crypto.AES.importKey('raw', hex2ua(rawKey))\n return crypt(\n accessLog,\n (obj: { [key: string]: string }) => this.crypto.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey),\n this.cryptedKeys\n )\n })\n )\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | any> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise<models.AccessLog | any> {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<PaginatedListAccessLog> {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise<models.AccessLog | null> {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, [accessLog]))\n .then((als) => als[0])\n : null\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise<models.AccessLog | any> {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise<models.AccessLog[]> {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.extractCryptedFKs(decryptedLog, user.healthcarePartyId as string).then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys.extractedKeys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n}\n"]}
|
|
@@ -28,6 +28,7 @@ export declare class IccBekmehrXApi extends IccBekmehrApi {
|
|
|
28
28
|
private readonly documentApi;
|
|
29
29
|
private readonly wssHost;
|
|
30
30
|
private readonly authApi;
|
|
31
|
+
private readonly usesNewKraken;
|
|
31
32
|
constructor(host: string, headers: {
|
|
32
33
|
[key: string]: string;
|
|
33
34
|
}, authApi: IccAuthApi, ctcApi: IccContactXApi, helementApi: IccHelementXApi, documentApi: IccDocumentXApi, authenticationProvider?: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
|