@icure/api 8.11.0 → 8.12.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/IccUserApi.d.ts +1 -1
- package/icc-api/api/IccUserApi.js +2 -2
- package/icc-api/api/IccUserApi.js.map +1 -1
- package/icc-api/model/HealthElement.d.ts +5 -0
- package/icc-api/model/HealthElement.js.map +1 -1
- package/icc-api/model/HealthElementQualifiedLink.d.ts +31 -0
- package/icc-api/model/HealthElementQualifiedLink.js +26 -0
- package/icc-api/model/HealthElementQualifiedLink.js.map +1 -0
- package/icc-api/model/models.d.ts +1 -0
- package/icc-api/model/models.js +1 -0
- package/icc-api/model/models.js.map +1 -1
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.d.ts +23 -0
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.js +30 -0
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.js.map +1 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.d.ts +24 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js +30 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js.map +1 -0
- package/icc-x-api/filters/filters.d.ts +2 -0
- package/icc-x-api/filters/filters.js +2 -0
- package/icc-x-api/filters/filters.js.map +1 -1
- package/package.json +1 -1
- package/test/benchmarks/lzma-benchmark.spec.d.ts +0 -1
- package/test/benchmarks/lzma-benchmark.spec.js +0 -131
- package/test/benchmarks/lzma-benchmark.spec.js.map +0 -1
- package/test/benchmarks/lzma-compat.spec.d.ts +0 -1
- package/test/benchmarks/lzma-compat.spec.js +0 -187
- package/test/benchmarks/lzma-compat.spec.js.map +0 -1
- package/test/benchmarks/playwright.config.d.ts +0 -2
- package/test/benchmarks/playwright.config.js +0 -18
- package/test/benchmarks/playwright.config.js.map +0 -1
- package/test/icc-api/api/IccAgendaApi.d.ts +0 -1
- package/test/icc-api/api/IccAgendaApi.js +0 -64
- package/test/icc-api/api/IccAgendaApi.js.map +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.d.ts +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.js +0 -58
- package/test/icc-api/api/IccAnonymousAccessApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemApi.js +0 -67
- package/test/icc-api/api/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.js +0 -96
- package/test/icc-api/api/IccCalendarItemTypeApi.js.map +0 -1
- package/test/icc-api/api/IccCodeApi.d.ts +0 -1
- package/test/icc-api/api/IccCodeApi.js +0 -38
- package/test/icc-api/api/IccCodeApi.js.map +0 -1
- package/test/icc-api/api/IccDocumentApi.d.ts +0 -1
- package/test/icc-api/api/IccDocumentApi.js +0 -199
- package/test/icc-api/api/IccDocumentApi.js.map +0 -1
- package/test/icc-api/api/IccGroupApi.d.ts +0 -1
- package/test/icc-api/api/IccGroupApi.js +0 -50
- package/test/icc-api/api/IccGroupApi.js.map +0 -1
- package/test/icc-api/api/IccKeywordApi.d.ts +0 -1
- package/test/icc-api/api/IccKeywordApi.js +0 -64
- package/test/icc-api/api/IccKeywordApi.js.map +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.d.ts +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.js +0 -64
- package/test/icc-api/api/IccMedicalLocationApi.js.map +0 -1
- package/test/icc-api/api/IccPlaceApi.d.ts +0 -1
- package/test/icc-api/api/IccPlaceApi.js +0 -64
- package/test/icc-api/api/IccPlaceApi.js.map +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.d.ts +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.js +0 -95
- package/test/icc-api/api/IccRecoveryDataApi.js.map +0 -1
- package/test/icc-api/api/IccRoleApi.d.ts +0 -1
- package/test/icc-api/api/IccRoleApi.js +0 -34
- package/test/icc-api/api/IccRoleApi.js.map +0 -1
- package/test/icc-api/api/IccUserApi.d.ts +0 -1
- package/test/icc-api/api/IccUserApi.js +0 -96
- package/test/icc-api/api/IccUserApi.js.map +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.js +0 -46
- package/test/icc-api/e2e/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/model/modelHelpersTest.d.ts +0 -1
- package/test/icc-api/model/modelHelpersTest.js +0 -45
- package/test/icc-api/model/modelHelpersTest.js.map +0 -1
- package/test/icc-x-api/auth/group-switch-test.d.ts +0 -1
- package/test/icc-x-api/auth/group-switch-test.js +0 -81
- package/test/icc-x-api/auth/group-switch-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +0 -2
- package/test/icc-x-api/auth/jwt-concurrency-test.js +0 -112
- package/test/icc-x-api/auth/jwt-concurrency-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.js +0 -197
- package/test/icc-x-api/auth/jwt-provider-test.js.map +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.js +0 -224
- package/test/icc-x-api/auth/smart-auth-provider-test.js.map +0 -1
- package/test/icc-x-api/autofix-anonymity-test.d.ts +0 -1
- package/test/icc-x-api/autofix-anonymity-test.js +0 -122
- package/test/icc-x-api/autofix-anonymity-test.js.map +0 -1
- package/test/icc-x-api/confidential-entities-test.d.ts +0 -1
- package/test/icc-x-api/confidential-entities-test.js +0 -168
- package/test/icc-x-api/confidential-entities-test.js.map +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.js +0 -276
- package/test/icc-x-api/crud/comprehensive-crud-test.js.map +0 -1
- package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +0 -16
- package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -407
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.js +0 -587
- package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +0 -1
- package/test/icc-x-api/crypto/concurrency.d.ts +0 -1
- package/test/icc-x-api/crypto/concurrency.js +0 -35
- package/test/icc-x-api/crypto/concurrency.js.map +0 -1
- package/test/icc-x-api/crypto/crypto-utils.d.ts +0 -1
- package/test/icc-x-api/crypto/crypto-utils.js +0 -79
- package/test/icc-x-api/crypto/crypto-utils.js.map +0 -1
- package/test/icc-x-api/crypto/cryptoTest.d.ts +0 -2
- package/test/icc-x-api/crypto/cryptoTest.js +0 -402
- package/test/icc-x-api/crypto/cryptoTest.js.map +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +0 -166
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +0 -674
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.d.ts +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.js +0 -454
- package/test/icc-x-api/crypto/full-crypto-test.js.map +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.d.ts +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +0 -379
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +0 -278
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/shamir.d.ts +0 -2
- package/test/icc-x-api/crypto/shamir.js +0 -167
- package/test/icc-x-api/crypto/shamir.js.map +0 -1
- package/test/icc-x-api/crypto/share-deduplication-test.d.ts +0 -1
- package/test/icc-x-api/crypto/share-deduplication-test.js +0 -250
- package/test/icc-x-api/crypto/share-deduplication-test.js.map +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +0 -71
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +0 -1
- package/test/icc-x-api/crypto/soft-deleted-data-owners.d.ts +0 -2
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js +0 -113
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +0 -246
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.d.ts +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.js +0 -142
- package/test/icc-x-api/entity-with-attachments-api-test.js.map +0 -1
- package/test/icc-x-api/filters/filters.d.ts +0 -1
- package/test/icc-x-api/filters/filters.js +0 -49
- package/test/icc-x-api/filters/filters.js.map +0 -1
- package/test/icc-x-api/filters/healthelement.d.ts +0 -1
- package/test/icc-x-api/filters/healthelement.js +0 -333
- package/test/icc-x-api/filters/healthelement.js.map +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.js +0 -106
- package/test/icc-x-api/icc-accesslog-x-api.js.map +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.js +0 -91
- package/test/icc-x-api/icc-application-settings-x-api.js.map +0 -1
- package/test/icc-x-api/icc-auth-api.d.ts +0 -1
- package/test/icc-x-api/icc-auth-api.js +0 -47
- package/test/icc-x-api/icc-auth-api.js.map +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.js +0 -150
- package/test/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
- package/test/icc-x-api/icc-code-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-code-x-api-test.js +0 -74
- package/test/icc-x-api/icc-code-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-contact-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-contact-x-api.js +0 -355
- package/test/icc-x-api/icc-contact-x-api.js.map +0 -1
- package/test/icc-x-api/icc-document-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-document-x-api.js +0 -76
- package/test/icc-x-api/icc-document-x-api.js.map +0 -1
- package/test/icc-x-api/icc-form-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-form-x-api.js +0 -413
- package/test/icc-x-api/icc-form-x-api.js.map +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.js +0 -43
- package/test/icc-x-api/icc-hcparty-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.js +0 -155
- package/test/icc-x-api/icc-helement-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-invoice-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-invoice-x-api.js +0 -99
- package/test/icc-x-api/icc-invoice-x-api.js.map +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js +0 -222
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-message-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-message-x-api.js +0 -54
- package/test/icc-x-api/icc-message-x-api.js.map +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.js +0 -209
- package/test/icc-x-api/icc-patient-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-recovery-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-recovery-x-api.js +0 -175
- package/test/icc-x-api/icc-recovery-x-api.js.map +0 -1
- package/test/icc-x-api/icc-topic-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-topic-x-api.js +0 -269
- package/test/icc-x-api/icc-topic-x-api.js.map +0 -1
- package/test/icc-x-api/icc-user-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-user-x-api-test.js +0 -99
- package/test/icc-x-api/icc-user-x-api-test.js.map +0 -1
- package/test/icc-x-api/keyless-api.d.ts +0 -1
- package/test/icc-x-api/keyless-api.js +0 -125
- package/test/icc-x-api/keyless-api.js.map +0 -1
- package/test/icc-x-api/patient-user.d.ts +0 -2
- package/test/icc-x-api/patient-user.js +0 -103
- package/test/icc-x-api/patient-user.js.map +0 -1
- package/test/icc-x-api/storage/storage.d.ts +0 -1
- package/test/icc-x-api/storage/storage.js +0 -48
- package/test/icc-x-api/storage/storage.js.map +0 -1
- package/test/icc-x-api/test-api-no-parent.d.ts +0 -1
- package/test/icc-x-api/test-api-no-parent.js +0 -79
- package/test/icc-x-api/test-api-no-parent.js.map +0 -1
- package/test/icc-x-api/test-legacy-data-support.d.ts +0 -1
- package/test/icc-x-api/test-legacy-data-support.js +0 -375
- package/test/icc-x-api/test-legacy-data-support.js.map +0 -1
- package/test/icc-x-api/utils/date-encode-test.d.ts +0 -1
- package/test/icc-x-api/utils/date-encode-test.js +0 -150
- package/test/icc-x-api/utils/date-encode-test.js.map +0 -1
- package/test/icc-x-api/utils/graph-test.d.ts +0 -1
- package/test/icc-x-api/utils/graph-test.js +0 -54
- package/test/icc-x-api/utils/graph-test.js.map +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +0 -364
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +0 -1
- package/test/icc-x-api/utils/lzma-benchmark-test.d.ts +0 -1
- package/test/icc-x-api/utils/lzma-benchmark-test.js +0 -132
- package/test/icc-x-api/utils/lzma-benchmark-test.js.map +0 -1
- package/test/icc-x-api/utils/lzma-compat-test.d.ts +0 -1
- package/test/icc-x-api/utils/lzma-compat-test.js +0 -218
- package/test/icc-x-api/utils/lzma-compat-test.js.map +0 -1
- package/test/icc-x-api/utils/mutex-test.d.ts +0 -1
- package/test/icc-x-api/utils/mutex-test.js +0 -114
- package/test/icc-x-api/utils/mutex-test.js.map +0 -1
- package/test/icc-x-api/utils/to-moment-test.d.ts +0 -1
- package/test/icc-x-api/utils/to-moment-test.js +0 -110
- package/test/icc-x-api/utils/to-moment-test.js.map +0 -1
- package/test/support/CSM-185.d.ts +0 -1
- package/test/support/CSM-185.js +0 -124
- package/test/support/CSM-185.js.map +0 -1
- package/test/support/CSM-243.d.ts +0 -1
- package/test/support/CSM-243.js +0 -120
- package/test/support/CSM-243.js.map +0 -1
- package/test/support/CSM-543.d.ts +0 -1
- package/test/support/CSM-543.js +0 -164
- package/test/support/CSM-543.js.map +0 -1
- package/test/support/CSM-729.d.ts +0 -1
- package/test/support/CSM-729.js +0 -225
- package/test/support/CSM-729.js.map +0 -1
- package/test/support/CSM-814.d.ts +0 -1
- package/test/support/CSM-814.js +0 -475
- package/test/support/CSM-814.js.map +0 -1
- package/test/support/CSM-87.d.ts +0 -0
- package/test/support/CSM-87.js +0 -21
- package/test/support/CSM-87.js.map +0 -1
- package/test/support/CSM-93.d.ts +0 -1
- package/test/support/CSM-93.js +0 -112
- package/test/support/CSM-93.js.map +0 -1
- package/test/utils/FakeDataOwnerApi.d.ts +0 -32
- package/test/utils/FakeDataOwnerApi.js +0 -136
- package/test/utils/FakeDataOwnerApi.js.map +0 -1
- package/test/utils/FakeEncryptionKeysManager.d.ts +0 -36
- package/test/utils/FakeEncryptionKeysManager.js +0 -97
- package/test/utils/FakeEncryptionKeysManager.js.map +0 -1
- package/test/utils/FakeExchangeDataApi.d.ts +0 -32
- package/test/utils/FakeExchangeDataApi.js +0 -92
- package/test/utils/FakeExchangeDataApi.js.map +0 -1
- package/test/utils/FakeExchangeDataManager.d.ts +0 -48
- package/test/utils/FakeExchangeDataManager.js +0 -82
- package/test/utils/FakeExchangeDataManager.js.map +0 -1
- package/test/utils/FakeExchangeDataMapManager.d.ts +0 -12
- package/test/utils/FakeExchangeDataMapManager.js +0 -38
- package/test/utils/FakeExchangeDataMapManager.js.map +0 -1
- package/test/utils/FakeGenericApi.d.ts +0 -16
- package/test/utils/FakeGenericApi.js +0 -65
- package/test/utils/FakeGenericApi.js.map +0 -1
- package/test/utils/KeylessCryptoStrategies.d.ts +0 -23
- package/test/utils/KeylessCryptoStrategies.js +0 -26
- package/test/utils/KeylessCryptoStrategies.js.map +0 -1
- package/test/utils/TestApi.d.ts +0 -3
- package/test/utils/TestApi.js +0 -30
- package/test/utils/TestApi.js.map +0 -1
- package/test/utils/TestCollectionUtils.d.ts +0 -1
- package/test/utils/TestCollectionUtils.js +0 -310
- package/test/utils/TestCollectionUtils.js.map +0 -1
- package/test/utils/TestCryptoStrategies.d.ts +0 -42
- package/test/utils/TestCryptoStrategies.js +0 -80
- package/test/utils/TestCryptoStrategies.js.map +0 -1
- package/test/utils/TestStorage.d.ts +0 -23
- package/test/utils/TestStorage.js +0 -61
- package/test/utils/TestStorage.js.map +0 -1
- package/test/utils/roles.d.ts +0 -14
- package/test/utils/roles.js +0 -345
- package/test/utils/roles.js.map +0 -1
- package/test/utils/test_utils.d.ts +0 -87
- package/test/utils/test_utils.js +0 -452
- package/test/utils/test_utils.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
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 { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement';
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the HealthElements that have in their qualifiedLinks, for any type of qualification, a link
|
|
15
|
+
* with an association id equal to associationId.
|
|
16
|
+
* As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special
|
|
17
|
+
* permission is required to use this filter.
|
|
18
|
+
*/
|
|
19
|
+
export declare class HealthElementByAssociationIdFilter extends AbstractFilterHealthElement {
|
|
20
|
+
$type: string;
|
|
21
|
+
constructor(json: JSON | any);
|
|
22
|
+
associationId?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthElementByAssociationIdFilter = 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 AbstractFilterHealthElement_1 = require("../../icc-api/model/AbstractFilterHealthElement");
|
|
16
|
+
/**
|
|
17
|
+
* Retrieves the HealthElements that have in their qualifiedLinks, for any type of qualification, a link
|
|
18
|
+
* with an association id equal to associationId.
|
|
19
|
+
* As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special
|
|
20
|
+
* permission is required to use this filter.
|
|
21
|
+
*/
|
|
22
|
+
class HealthElementByAssociationIdFilter extends AbstractFilterHealthElement_1.AbstractFilterHealthElement {
|
|
23
|
+
constructor(json) {
|
|
24
|
+
super(json);
|
|
25
|
+
this.$type = 'HealthElementByAssociationIdFilter';
|
|
26
|
+
Object.assign(this, json);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.HealthElementByAssociationIdFilter = HealthElementByAssociationIdFilter;
|
|
30
|
+
//# sourceMappingURL=HealthElementByAssociationIdFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HealthElementByAssociationIdFilter.js","sourceRoot":"","sources":["../../../icc-x-api/filters/HealthElementByAssociationIdFilter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,iGAA6F;AAE7F;;;;;GAKG;AACH,MAAa,kCAAmC,SAAQ,yDAA2B;IAEjF,YAAY,IAAgB;QAC1B,KAAK,CAAC,IAAI,CAAC,CAAA;QAFb,UAAK,GAAW,oCAAoC,CAAA;QAIlD,MAAM,CAAC,MAAM,CAAC,IAA0C,EAAE,IAAI,CAAC,CAAA;IACjE,CAAC;CAGF;AATD,gFASC","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 { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\n/**\n * Retrieves the HealthElements that have in their qualifiedLinks, for any type of qualification, a link\n * with an association id equal to associationId.\n * As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special\n * permission is required to use this filter.\n */\nexport class HealthElementByAssociationIdFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByAssociationIdFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByAssociationIdFilter, json)\n }\n\n associationId?: string\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement';
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the HealthElement ids that have in their qualifiedLinks at least one link towards one of
|
|
15
|
+
* linkedIds. If type is not null, then only links with that qualification type are considered.
|
|
16
|
+
* As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special
|
|
17
|
+
* permission is required to use this filter.
|
|
18
|
+
*/
|
|
19
|
+
export declare class HealthElementByQualifiedLinkFilter extends AbstractFilterHealthElement {
|
|
20
|
+
$type: string;
|
|
21
|
+
constructor(json: JSON | any);
|
|
22
|
+
linkedIds?: Array<string>;
|
|
23
|
+
type?: string;
|
|
24
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthElementByQualifiedLinkFilter = 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 AbstractFilterHealthElement_1 = require("../../icc-api/model/AbstractFilterHealthElement");
|
|
16
|
+
/**
|
|
17
|
+
* Retrieves the HealthElement ids that have in their qualifiedLinks at least one link towards one of
|
|
18
|
+
* linkedIds. If type is not null, then only links with that qualification type are considered.
|
|
19
|
+
* As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special
|
|
20
|
+
* permission is required to use this filter.
|
|
21
|
+
*/
|
|
22
|
+
class HealthElementByQualifiedLinkFilter extends AbstractFilterHealthElement_1.AbstractFilterHealthElement {
|
|
23
|
+
constructor(json) {
|
|
24
|
+
super(json);
|
|
25
|
+
this.$type = 'HealthElementByQualifiedLinkFilter';
|
|
26
|
+
Object.assign(this, json);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.HealthElementByQualifiedLinkFilter = HealthElementByQualifiedLinkFilter;
|
|
30
|
+
//# sourceMappingURL=HealthElementByQualifiedLinkFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HealthElementByQualifiedLinkFilter.js","sourceRoot":"","sources":["../../../icc-x-api/filters/HealthElementByQualifiedLinkFilter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,iGAA6F;AAE7F;;;;;GAKG;AACH,MAAa,kCAAmC,SAAQ,yDAA2B;IAEjF,YAAY,IAAgB;QAC1B,KAAK,CAAC,IAAI,CAAC,CAAA;QAFb,UAAK,GAAW,oCAAoC,CAAA;QAIlD,MAAM,CAAC,MAAM,CAAC,IAA0C,EAAE,IAAI,CAAC,CAAA;IACjE,CAAC;CAIF;AAVD,gFAUC","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 { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\n/**\n * Retrieves the HealthElement ids that have in their qualifiedLinks at least one link towards one of\n * linkedIds. If type is not null, then only links with that qualification type are considered.\n * As HealthElement is an encryptable entity and this filter does not specify a data owner id, a special\n * permission is required to use this filter.\n */\nexport class HealthElementByQualifiedLinkFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByQualifiedLinkFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByQualifiedLinkFilter, json)\n }\n\n linkedIds?: Array<string>\n type?: string\n}\n"]}
|
|
@@ -45,6 +45,7 @@ export * from './ContactByHcPartyTagCodeDateFilter';
|
|
|
45
45
|
export * from './ContactByServiceIdsFilter';
|
|
46
46
|
export * from './DeviceByHcPartyFilter';
|
|
47
47
|
export * from './DeviceByIdsFilter';
|
|
48
|
+
export * from './HealthElementByAssociationIdFilter';
|
|
48
49
|
export * from './HealthElementByHcPartyCodeFilter';
|
|
49
50
|
export * from './HealthElementByHcPartyFilter';
|
|
50
51
|
export * from './HealthElementByHcPartyIdentifiersFilter';
|
|
@@ -54,6 +55,7 @@ export * from './HealthElementByHcPartyStatusVersioningFilter';
|
|
|
54
55
|
export * from './HealthElementByHcPartyTagCodeFilter';
|
|
55
56
|
export * from './HealthElementByHcPartyTagFilter';
|
|
56
57
|
export * from './HealthElementByIdsFilter';
|
|
58
|
+
export * from './HealthElementByQualifiedLinkFilter';
|
|
57
59
|
export * from './HealthcarePartyByIdsFilter';
|
|
58
60
|
export * from './HealthcarePartyByNameFilter';
|
|
59
61
|
export * from './HealthcarePartyByTagCodeFilter';
|
|
@@ -49,6 +49,7 @@ __exportStar(require("./ContactByHcPartyTagCodeDateFilter"), exports);
|
|
|
49
49
|
__exportStar(require("./ContactByServiceIdsFilter"), exports);
|
|
50
50
|
__exportStar(require("./DeviceByHcPartyFilter"), exports);
|
|
51
51
|
__exportStar(require("./DeviceByIdsFilter"), exports);
|
|
52
|
+
__exportStar(require("./HealthElementByAssociationIdFilter"), exports);
|
|
52
53
|
__exportStar(require("./HealthElementByHcPartyCodeFilter"), exports);
|
|
53
54
|
__exportStar(require("./HealthElementByHcPartyFilter"), exports);
|
|
54
55
|
__exportStar(require("./HealthElementByHcPartyIdentifiersFilter"), exports);
|
|
@@ -58,6 +59,7 @@ __exportStar(require("./HealthElementByHcPartyStatusVersioningFilter"), exports)
|
|
|
58
59
|
__exportStar(require("./HealthElementByHcPartyTagCodeFilter"), exports);
|
|
59
60
|
__exportStar(require("./HealthElementByHcPartyTagFilter"), exports);
|
|
60
61
|
__exportStar(require("./HealthElementByIdsFilter"), exports);
|
|
62
|
+
__exportStar(require("./HealthElementByQualifiedLinkFilter"), exports);
|
|
61
63
|
__exportStar(require("./HealthcarePartyByIdsFilter"), exports);
|
|
62
64
|
__exportStar(require("./HealthcarePartyByNameFilter"), exports);
|
|
63
65
|
__exportStar(require("./HealthcarePartyByTagCodeFilter"), exports);
|
|
@@ -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 { 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 { PatientByHcPartyGenderEducationProfessionFilter } from './PatientByHcPartyGenderEducationProfessionFilter'\nimport { PatientByIdsFilter } from './PatientByIdsFilter'\nimport { PatientByHcPartyNameContainsFuzzyFilter } from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport { ContactByHcPartyFilter } from './ContactByHcPartyFilter'\nimport { Device } from '../../icc-api/model/Device'\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\nimport { Code } from '../../icc-api/model/Code'\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\nimport { Invoice } from '../../icc-api/model/Invoice'\nimport { AbstractFilterInvoice } from '../../icc-api/model/AbstractFilterInvoice'\nimport { User } from '../../icc-api/model/User'\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\nimport { Tarification } from '../../icc-api/model/Tarification'\nimport { AbstractFilterPricing } from '../../icc-api/model/AbstractFilterPricing'\nimport { Insurance } from '../../icc-api/model/Insurance'\nimport { AbstractFilterInsurance } from '../../icc-api/model/AbstractFilterInsurance'\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllDocumentsFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllInsurancesFilter'\nexport * from './AllUsersFilter'\nexport * from './AllPricingFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeCodeVersionFilter'\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 './HealthElementByHcPartyCodeFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartyIdentifiersVersioningFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyStatusVersioningFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByHcPartyTagFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './HealthcarePartyByIdentifiersFilter'\nexport * from './HealthcarePartyByIdsFilter'\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 './PatientByHcPartyGenderEducationProfessionFilter'\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 './ServiceByHcPartyCodePrefixFilter'\nexport * from './ServiceByHcPartyTagPrefixFilter'\nexport * from './ServiceByHcPartyMonthCodePrefixFilter'\nexport * from './ServiceByHcPartyMonthTagPrefixFilter'\nexport * from './ServiceByHcPartyPatientCodePrefixFilter'\nexport * from './ServiceByHcPartyPatientTagPrefixFilter'\nexport * from './ServiceByHcPartyCodesFilter'\nexport * from './ServiceByHcPartyTagCodesFilter'\nexport * from './ServiceByHcPartyPatientCodesFilter'\nexport * from './ServiceByHcPartyPatientTagCodesFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\nexport * from './MaintenanceTaskByHcPartyAndIdentifiersFilter'\nexport * from './MaintenanceTaskByHcPartyAndTypeFilter'\nexport * from './MaintenanceTaskByIdsFilter'\nexport * from './MaintenanceTaskAfterDateFilter'\nexport * from './TopicByHcPartyFilter'\nexport * from './TopicByParticipantFilter'\nexport * from './MessageByHcPartyFilter'\nexport * from './MessageByHcPartyTransportGuidFilter'\nexport * from './LatestMessageByHcPartyTransportGuidFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter<T> =\n | (T extends Patient\n ? AbstractFilterPatient\n : T extends Contact\n ? AbstractFilterContact\n : T extends Service\n ? AbstractFilterService\n : T extends HealthcareParty\n ? AbstractFilterHealthcareParty\n : T extends Device\n ? AbstractFilterDevice\n : T extends MaintenanceTask\n ? AbstractFilterMaintenanceTask\n : T extends Code\n ? AbstractFilterCode\n : T extends HealthElement\n ? AbstractFilterHealthElement\n : T extends Insurance\n ? AbstractFilterInsurance\n : T extends Invoice\n ? AbstractFilterInvoice\n : T extends User\n ? AbstractFilterUser\n : T extends Tarification\n ? AbstractFilterPricing\n : never)\n | ConstantFilter<T>\n | IntersectionFilter<T>\n | UnionFilter<T>\n | 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\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 // 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 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 /**\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 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\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 PatientByHcPartyGenderEducationProfessionFilter({\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 { PatientByHcPartyGenderEducationProfessionFilter } from './PatientByHcPartyGenderEducationProfessionFilter'\nimport { PatientByIdsFilter } from './PatientByIdsFilter'\nimport { PatientByHcPartyNameContainsFuzzyFilter } from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport { ContactByHcPartyFilter } from './ContactByHcPartyFilter'\nimport { Device } from '../../icc-api/model/Device'\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\nimport { Code } from '../../icc-api/model/Code'\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\nimport { Invoice } from '../../icc-api/model/Invoice'\nimport { AbstractFilterInvoice } from '../../icc-api/model/AbstractFilterInvoice'\nimport { User } from '../../icc-api/model/User'\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\nimport { Tarification } from '../../icc-api/model/Tarification'\nimport { AbstractFilterPricing } from '../../icc-api/model/AbstractFilterPricing'\nimport { Insurance } from '../../icc-api/model/Insurance'\nimport { AbstractFilterInsurance } from '../../icc-api/model/AbstractFilterInsurance'\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllDocumentsFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllInsurancesFilter'\nexport * from './AllUsersFilter'\nexport * from './AllPricingFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeCodeVersionFilter'\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 './HealthElementByAssociationIdFilter'\nexport * from './HealthElementByHcPartyCodeFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartyIdentifiersVersioningFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyStatusVersioningFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByHcPartyTagFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthElementByQualifiedLinkFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './HealthcarePartyByIdentifiersFilter'\nexport * from './HealthcarePartyByIdsFilter'\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 './PatientByHcPartyGenderEducationProfessionFilter'\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 './ServiceByHcPartyCodePrefixFilter'\nexport * from './ServiceByHcPartyTagPrefixFilter'\nexport * from './ServiceByHcPartyMonthCodePrefixFilter'\nexport * from './ServiceByHcPartyMonthTagPrefixFilter'\nexport * from './ServiceByHcPartyPatientCodePrefixFilter'\nexport * from './ServiceByHcPartyPatientTagPrefixFilter'\nexport * from './ServiceByHcPartyCodesFilter'\nexport * from './ServiceByHcPartyTagCodesFilter'\nexport * from './ServiceByHcPartyPatientCodesFilter'\nexport * from './ServiceByHcPartyPatientTagCodesFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\nexport * from './MaintenanceTaskByHcPartyAndIdentifiersFilter'\nexport * from './MaintenanceTaskByHcPartyAndTypeFilter'\nexport * from './MaintenanceTaskByIdsFilter'\nexport * from './MaintenanceTaskAfterDateFilter'\nexport * from './TopicByHcPartyFilter'\nexport * from './TopicByParticipantFilter'\nexport * from './MessageByHcPartyFilter'\nexport * from './MessageByHcPartyTransportGuidFilter'\nexport * from './LatestMessageByHcPartyTransportGuidFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter<T> =\n | (T extends Patient\n ? AbstractFilterPatient\n : T extends Contact\n ? AbstractFilterContact\n : T extends Service\n ? AbstractFilterService\n : T extends HealthcareParty\n ? AbstractFilterHealthcareParty\n : T extends Device\n ? AbstractFilterDevice\n : T extends MaintenanceTask\n ? AbstractFilterMaintenanceTask\n : T extends Code\n ? AbstractFilterCode\n : T extends HealthElement\n ? AbstractFilterHealthElement\n : T extends Insurance\n ? AbstractFilterInsurance\n : T extends Invoice\n ? AbstractFilterInvoice\n : T extends User\n ? AbstractFilterUser\n : T extends Tarification\n ? AbstractFilterPricing\n : never)\n | ConstantFilter<T>\n | IntersectionFilter<T>\n | UnionFilter<T>\n | 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\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 // 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 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 /**\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 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\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 PatientByHcPartyGenderEducationProfessionFilter({\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"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const test_1 = require("@playwright/test");
|
|
13
|
-
const http = require("http");
|
|
14
|
-
const fs = require("fs");
|
|
15
|
-
const path = require("path");
|
|
16
|
-
const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
|
|
17
|
-
const MIME_TYPES = {
|
|
18
|
-
'.html': 'text/html',
|
|
19
|
-
'.js': 'application/javascript',
|
|
20
|
-
'.wasm': 'application/wasm',
|
|
21
|
-
'.css': 'text/css',
|
|
22
|
-
};
|
|
23
|
-
function startServer() {
|
|
24
|
-
return new Promise((resolve) => {
|
|
25
|
-
const server = http.createServer((req, res) => {
|
|
26
|
-
var _a;
|
|
27
|
-
const urlPath = ((_a = req.url) === null || _a === void 0 ? void 0 : _a.split('?')[0]) || '/';
|
|
28
|
-
const filePath = path.join(PROJECT_ROOT, urlPath);
|
|
29
|
-
if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {
|
|
30
|
-
res.writeHead(404);
|
|
31
|
-
res.end('Not found');
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const ext = path.extname(filePath);
|
|
35
|
-
const contentType = MIME_TYPES[ext] || 'application/octet-stream';
|
|
36
|
-
res.writeHead(200, {
|
|
37
|
-
'Content-Type': contentType,
|
|
38
|
-
'Cross-Origin-Opener-Policy': 'same-origin',
|
|
39
|
-
'Cross-Origin-Embedder-Policy': 'require-corp',
|
|
40
|
-
});
|
|
41
|
-
fs.createReadStream(filePath).pipe(res);
|
|
42
|
-
});
|
|
43
|
-
server.listen(0, () => {
|
|
44
|
-
const addr = server.address();
|
|
45
|
-
const port = typeof addr === 'object' && addr ? addr.port : 0;
|
|
46
|
-
resolve({ server, port });
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
const IMPLS = ['jsInline', 'jsWorker', 'wasm'];
|
|
51
|
-
const IMPL_LABELS = {
|
|
52
|
-
jsInline: 'JS Inline (LZMA1)',
|
|
53
|
-
jsWorker: 'JS Worker (LZMA1)',
|
|
54
|
-
wasm: 'WASM (LZMA2/XZ)',
|
|
55
|
-
};
|
|
56
|
-
function fmtMs(ms) {
|
|
57
|
-
if (ms >= 1000)
|
|
58
|
-
return (ms / 1000).toFixed(2) + ' s';
|
|
59
|
-
return ms.toFixed(2) + ' ms';
|
|
60
|
-
}
|
|
61
|
-
function pad(s, w) {
|
|
62
|
-
return s.length >= w ? s : ' '.repeat(w - s.length) + s;
|
|
63
|
-
}
|
|
64
|
-
const WORKER_FILES_DIR = path.join(__dirname, 'worker-files');
|
|
65
|
-
(0, test_1.test)('LZMA benchmark: JS Inline vs JS Worker vs WASM', (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
|
|
66
|
-
test_1.test.setTimeout(3600000); // 60 minutes for 128MB payloads
|
|
67
|
-
const { server, port } = yield startServer();
|
|
68
|
-
try {
|
|
69
|
-
yield page.goto(`http://localhost:${port}/test/benchmarks/lzma-benchmark.html`);
|
|
70
|
-
yield page.waitForFunction(() => window.__benchmarkResults != null, null, { timeout: 3300000 });
|
|
71
|
-
const results = yield page.evaluate(() => window.__benchmarkResults);
|
|
72
|
-
// Save test files to worker-files directory (skip large payloads with no exported files)
|
|
73
|
-
fs.mkdirSync(WORKER_FILES_DIR, { recursive: true });
|
|
74
|
-
for (const r of results) {
|
|
75
|
-
if (!r.files)
|
|
76
|
-
continue;
|
|
77
|
-
fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.bin`), Buffer.from(r.files.reference, 'base64'));
|
|
78
|
-
fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.lzma`), Buffer.from(r.files.lzmaJs, 'base64'));
|
|
79
|
-
fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.xz`), Buffer.from(r.files.lzmaWasm, 'base64'));
|
|
80
|
-
console.log(`Saved ${r.tag}.bin, ${r.tag}.lzma, ${r.tag}.xz to ${WORKER_FILES_DIR}`);
|
|
81
|
-
}
|
|
82
|
-
// Print results
|
|
83
|
-
const W = 130;
|
|
84
|
-
console.log('\n' + '='.repeat(W));
|
|
85
|
-
console.log('LZMA Benchmark: JS Inline vs JS Worker vs WASM');
|
|
86
|
-
console.log('='.repeat(W));
|
|
87
|
-
for (const r of results) {
|
|
88
|
-
console.log(`\n--- ${r.size} (${r.originalBytes.toLocaleString()} bytes)${r.skipJs ? ' [WASM only]' : ''} ---\n`);
|
|
89
|
-
const activeImpls = r.skipJs ? ['wasm'] : IMPLS;
|
|
90
|
-
for (const op of ['compress', 'decompress']) {
|
|
91
|
-
console.log(` ${op.toUpperCase()}:`);
|
|
92
|
-
console.log(` ${'Implementation'.padEnd(22)} ${pad('Median', 12)} ${pad('Mean', 12)} ${pad('Min', 12)} ${pad('Max', 12)} ${pad('P95', 12)} ${pad('Size', 10)} ${pad('Ratio', 8)} ${pad('OK', 4)}`);
|
|
93
|
-
console.log(' ' + '-'.repeat(W - 4));
|
|
94
|
-
const medians = activeImpls.map((impl) => r[impl][op].median);
|
|
95
|
-
const fastestMedian = Math.min(...medians);
|
|
96
|
-
for (const impl of activeImpls) {
|
|
97
|
-
const s = r[impl][op];
|
|
98
|
-
const isFastest = s.median === fastestMedian;
|
|
99
|
-
const marker = isFastest ? ' *' : ' ';
|
|
100
|
-
const compSize = op === 'compress' ? String(r[impl].compressedSize) : '-';
|
|
101
|
-
const ratio = op === 'compress' ? r[impl].ratio + '%' : '-';
|
|
102
|
-
console.log(` ${marker}${IMPL_LABELS[impl].padEnd(22)} ${pad(fmtMs(s.median), 12)} ${pad(fmtMs(s.mean), 12)} ${pad(fmtMs(s.min), 12)} ${pad(fmtMs(s.max), 12)} ${pad(fmtMs(s.p95), 12)} ${pad(compSize, 10)} ${pad(ratio, 8)} ${pad(r[impl].correct ? 'OK' : 'FAIL', 4)}`);
|
|
103
|
-
}
|
|
104
|
-
if (!r.skipJs) {
|
|
105
|
-
const jsInlineMs = r.jsInline[op].median;
|
|
106
|
-
const jsWorkerMs = r.jsWorker[op].median;
|
|
107
|
-
const wasmMs = r.wasm[op].median;
|
|
108
|
-
console.log('');
|
|
109
|
-
console.log(` Speedup vs JS Inline: Worker ${(jsInlineMs / jsWorkerMs).toFixed(1)}x | WASM ${(jsInlineMs / wasmMs).toFixed(1)}x`);
|
|
110
|
-
console.log(` Speedup vs JS Worker: WASM ${(jsWorkerMs / wasmMs).toFixed(1)}x`);
|
|
111
|
-
}
|
|
112
|
-
console.log('');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
console.log('='.repeat(W));
|
|
116
|
-
console.log('* = fastest for that operation/size');
|
|
117
|
-
console.log('='.repeat(W));
|
|
118
|
-
// Assertions
|
|
119
|
-
for (const r of results) {
|
|
120
|
-
if (!r.skipJs) {
|
|
121
|
-
(0, test_1.expect)(r.jsInline.correct).toBe(true);
|
|
122
|
-
(0, test_1.expect)(r.jsWorker.correct).toBe(true);
|
|
123
|
-
}
|
|
124
|
-
(0, test_1.expect)(r.wasm.correct).toBe(true);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
finally {
|
|
128
|
-
server.close();
|
|
129
|
-
}
|
|
130
|
-
}));
|
|
131
|
-
//# sourceMappingURL=lzma-benchmark.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lzma-benchmark.spec.js","sourceRoot":"","sources":["../../../test/benchmarks/lzma-benchmark.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test'\nimport * as http from 'http'\nimport * as fs from 'fs'\nimport * as path from 'path'\n\nconst PROJECT_ROOT = path.resolve(__dirname, '..', '..')\n\nconst MIME_TYPES: Record<string, string> = {\n '.html': 'text/html',\n '.js': 'application/javascript',\n '.wasm': 'application/wasm',\n '.css': 'text/css',\n}\n\nfunction startServer(): Promise<{ server: http.Server; port: number }> {\n return new Promise((resolve) => {\n const server = http.createServer((req, res) => {\n const urlPath = req.url?.split('?')[0] || '/'\n const filePath = path.join(PROJECT_ROOT, urlPath)\n\n if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {\n res.writeHead(404)\n res.end('Not found')\n return\n }\n\n const ext = path.extname(filePath)\n const contentType = MIME_TYPES[ext] || 'application/octet-stream'\n\n res.writeHead(200, {\n 'Content-Type': contentType,\n 'Cross-Origin-Opener-Policy': 'same-origin',\n 'Cross-Origin-Embedder-Policy': 'require-corp',\n })\n fs.createReadStream(filePath).pipe(res)\n })\n\n server.listen(0, () => {\n const addr = server.address()\n const port = typeof addr === 'object' && addr ? addr.port : 0\n resolve({ server, port })\n })\n })\n}\n\ninterface Stats {\n median: number\n mean: number\n min: number\n max: number\n p95: number\n}\n\ninterface ImplResult {\n compress: Stats\n decompress: Stats\n compressedSize: number\n ratio: string\n correct: boolean\n}\n\ninterface BenchmarkResult {\n size: string\n tag: string\n skipJs: boolean\n originalBytes: number\n files: {\n reference: string // base64\n lzmaJs: string // base64\n lzmaWasm: string // base64\n } | null\n jsInline: ImplResult\n jsWorker: ImplResult\n wasm: ImplResult\n}\n\nconst IMPLS = ['jsInline', 'jsWorker', 'wasm'] as const\nconst IMPL_LABELS: Record<string, string> = {\n jsInline: 'JS Inline (LZMA1)',\n jsWorker: 'JS Worker (LZMA1)',\n wasm: 'WASM (LZMA2/XZ)',\n}\n\nfunction fmtMs(ms: number): string {\n if (ms >= 1000) return (ms / 1000).toFixed(2) + ' s'\n return ms.toFixed(2) + ' ms'\n}\n\nfunction pad(s: string, w: number): string {\n return s.length >= w ? s : ' '.repeat(w - s.length) + s\n}\n\nconst WORKER_FILES_DIR = path.join(__dirname, 'worker-files')\n\ntest('LZMA benchmark: JS Inline vs JS Worker vs WASM', async ({ page }) => {\n test.setTimeout(3_600_000) // 60 minutes for 128MB payloads\n\n const { server, port } = await startServer()\n\n try {\n await page.goto(`http://localhost:${port}/test/benchmarks/lzma-benchmark.html`)\n\n await page.waitForFunction(() => (window as any).__benchmarkResults != null, null, { timeout: 3_300_000 })\n\n const results: BenchmarkResult[] = await page.evaluate(() => (window as any).__benchmarkResults)\n\n // Save test files to worker-files directory (skip large payloads with no exported files)\n fs.mkdirSync(WORKER_FILES_DIR, { recursive: true })\n for (const r of results) {\n if (!r.files) continue\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.bin`), Buffer.from(r.files.reference, 'base64'))\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.lzma`), Buffer.from(r.files.lzmaJs, 'base64'))\n fs.writeFileSync(path.join(WORKER_FILES_DIR, `${r.tag}.xz`), Buffer.from(r.files.lzmaWasm, 'base64'))\n console.log(`Saved ${r.tag}.bin, ${r.tag}.lzma, ${r.tag}.xz to ${WORKER_FILES_DIR}`)\n }\n\n // Print results\n const W = 130\n console.log('\\n' + '='.repeat(W))\n console.log('LZMA Benchmark: JS Inline vs JS Worker vs WASM')\n console.log('='.repeat(W))\n\n for (const r of results) {\n console.log(`\\n--- ${r.size} (${r.originalBytes.toLocaleString()} bytes)${r.skipJs ? ' [WASM only]' : ''} ---\\n`)\n\n const activeImpls = r.skipJs ? (['wasm'] as const) : IMPLS\n\n for (const op of ['compress', 'decompress'] as const) {\n console.log(` ${op.toUpperCase()}:`)\n console.log(\n ` ${'Implementation'.padEnd(22)} ${pad('Median', 12)} ${pad('Mean', 12)} ${pad('Min', 12)} ${pad('Max', 12)} ${pad('P95', 12)} ${pad('Size', 10)} ${pad('Ratio', 8)} ${pad('OK', 4)}`\n )\n console.log(' ' + '-'.repeat(W - 4))\n\n const medians = activeImpls.map((impl) => r[impl][op].median)\n const fastestMedian = Math.min(...medians)\n\n for (const impl of activeImpls) {\n const s = r[impl][op]\n const isFastest = s.median === fastestMedian\n const marker = isFastest ? ' *' : ' '\n const compSize = op === 'compress' ? String(r[impl].compressedSize) : '-'\n const ratio = op === 'compress' ? r[impl].ratio + '%' : '-'\n console.log(\n ` ${marker}${IMPL_LABELS[impl].padEnd(22)} ${pad(fmtMs(s.median), 12)} ${pad(fmtMs(s.mean), 12)} ${pad(fmtMs(s.min), 12)} ${pad(fmtMs(s.max), 12)} ${pad(fmtMs(s.p95), 12)} ${pad(compSize, 10)} ${pad(ratio, 8)} ${pad(r[impl].correct ? 'OK' : 'FAIL', 4)}`\n )\n }\n\n if (!r.skipJs) {\n const jsInlineMs = r.jsInline[op].median\n const jsWorkerMs = r.jsWorker[op].median\n const wasmMs = r.wasm[op].median\n\n console.log('')\n console.log(` Speedup vs JS Inline: Worker ${(jsInlineMs / jsWorkerMs).toFixed(1)}x | WASM ${(jsInlineMs / wasmMs).toFixed(1)}x`)\n console.log(` Speedup vs JS Worker: WASM ${(jsWorkerMs / wasmMs).toFixed(1)}x`)\n }\n console.log('')\n }\n }\n\n console.log('='.repeat(W))\n console.log('* = fastest for that operation/size')\n console.log('='.repeat(W))\n\n // Assertions\n for (const r of results) {\n if (!r.skipJs) {\n expect(r.jsInline.correct).toBe(true)\n expect(r.jsWorker.correct).toBe(true)\n }\n expect(r.wasm.correct).toBe(true)\n }\n } finally {\n server.close()\n }\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|