@icure/api 8.6.18 → 8.7.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/IccDocumentApi.d.ts +10 -2
- package/icc-api/api/IccDocumentApi.js +22 -4
- package/icc-api/api/IccDocumentApi.js.map +1 -1
- package/icc-api/api/IccReceiptApi.d.ts +17 -0
- package/icc-api/api/IccReceiptApi.js +52 -0
- package/icc-api/api/IccReceiptApi.js.map +1 -1
- package/icc-api/model/DataAttachment.d.ts +22 -0
- package/icc-api/model/DataAttachment.js.map +1 -1
- package/icc-api/model/Document.d.ts +6 -0
- package/icc-api/model/Document.js.map +1 -1
- package/icc-api/model/Receipt.d.ts +6 -0
- package/icc-api/model/Receipt.js.map +1 -1
- package/icc-x-api/crypto/BaseExchangeDataManager.js +2 -2
- package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/ExchangeDataManager.js +3 -3
- package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtils.d.ts +1 -1
- package/icc-x-api/crypto/ExtendedApisUtils.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.d.ts +1 -1
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +8 -2
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
- package/icc-x-api/crypto/RecoveryDataEncryption.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.js +7 -7
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.js +7 -7
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-classification-x-api.js +4 -5
- package/icc-x-api/icc-classification-x-api.js.map +1 -1
- package/icc-x-api/icc-code-x-api.d.ts +2 -2
- package/icc-x-api/icc-code-x-api.js +3 -33
- package/icc-x-api/icc-code-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.js +20 -33
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.d.ts +8 -7
- package/icc-x-api/icc-document-x-api.js +64 -22
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +3 -4
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.js +11 -11
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-invoice-x-api.js +3 -4
- package/icc-x-api/icc-invoice-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +3 -3
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.js +29 -29
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/icc-receipt-x-api.d.ts +40 -0
- package/icc-x-api/icc-receipt-x-api.js +79 -1
- package/icc-x-api/icc-receipt-x-api.js.map +1 -1
- package/icc-x-api/icc-topic-x-api.js.map +1 -1
- package/icc-x-api/index.js +1 -1
- package/icc-x-api/index.js.map +1 -1
- package/icc-x-api/utils/code-util.d.ts +23 -0
- package/icc-x-api/utils/code-util.js +39 -2
- package/icc-x-api/utils/code-util.js.map +1 -1
- package/icc-x-api/utils/collection-utils.d.ts +13 -0
- package/icc-x-api/utils/collection-utils.js +69 -0
- package/icc-x-api/utils/collection-utils.js.map +1 -1
- package/icc-x-api/utils/compression-utils.d.ts +28 -0
- package/icc-x-api/utils/compression-utils.js +106 -0
- package/icc-x-api/utils/compression-utils.js.map +1 -0
- package/icc-x-api/utils/crypto-utils.js +7 -7
- package/icc-x-api/utils/crypto-utils.js.map +1 -1
- package/icc-x-api/utils/formatting-util.d.ts +1 -3
- package/icc-x-api/utils/formatting-util.js +15 -17
- package/icc-x-api/utils/formatting-util.js.map +1 -1
- package/icc-x-api/utils/hcp-util.js +2 -3
- package/icc-x-api/utils/hcp-util.js.map +1 -1
- package/icc-x-api/utils/insurability-util.js +10 -8
- package/icc-x-api/utils/insurability-util.js.map +1 -1
- package/icc-x-api/utils/lzma-wasm.d.ts +6 -0
- package/icc-x-api/utils/lzma-wasm.js +81 -0
- package/icc-x-api/utils/lzma-wasm.js.map +1 -0
- package/icc-x-api/utils/mutex.d.ts +12 -0
- package/icc-x-api/utils/mutex.js +26 -0
- package/icc-x-api/utils/mutex.js.map +1 -0
- package/icc-x-api/utils/websocket.js +7 -7
- package/icc-x-api/utils/websocket.js.map +1 -1
- package/icc-x-api/wasm/lzma/lzma.js +2 -0
- package/icc-x-api/wasm/lzma/lzma.wasm +0 -0
- package/package.json +2 -11
- package/icc-x-api/utils/uuid-encoder.d.ts +0 -44
- package/icc-x-api/utils/uuid-encoder.js +0 -114
- package/icc-x-api/utils/uuid-encoder.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 -408
- 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-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-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 -165
- 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/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/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-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 -98
- 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 -109
- 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
|
@@ -8,7 +8,6 @@ exports.nihiiFormat = nihiiFormat;
|
|
|
8
8
|
exports.nihiiValidate = nihiiValidate;
|
|
9
9
|
exports.ssinFormat = ssinFormat;
|
|
10
10
|
exports.ssinValidate = ssinValidate;
|
|
11
|
-
exports.phoneNumberValidate = phoneNumberValidate;
|
|
12
11
|
exports.phoneNumberFormat = phoneNumberFormat;
|
|
13
12
|
exports.dateDecode = dateDecode;
|
|
14
13
|
exports.timeDecode = timeDecode;
|
|
@@ -22,8 +21,7 @@ exports.personName = personName;
|
|
|
22
21
|
exports.personNameAbbrev = personNameAbbrev;
|
|
23
22
|
exports.toMoment = toMoment;
|
|
24
23
|
const libphonenumber_js_1 = require("libphonenumber-js");
|
|
25
|
-
const
|
|
26
|
-
const _ = require("lodash");
|
|
24
|
+
const date_fns_1 = require("date-fns");
|
|
27
25
|
// TODO: move this to env.js?
|
|
28
26
|
const DEFAULT_COUNTRY = 'BE';
|
|
29
27
|
exports.nihiiRegExp = new RegExp('^(\\d{1})(\\d{5})(\\d{2})(\\d{3})$');
|
|
@@ -90,12 +88,9 @@ export function phoneNumberFormat(phoneNumber: string): string {
|
|
|
90
88
|
return phoneNumber
|
|
91
89
|
}
|
|
92
90
|
*/
|
|
93
|
-
function phoneNumberValidate(phoneNumber) {
|
|
94
|
-
return (0, libphonenumber_js_1.isValidNumber)(phoneNumber);
|
|
95
|
-
}
|
|
96
91
|
function phoneNumberFormat(phoneNumber) {
|
|
97
92
|
const parsedPhoneNumber = (0, libphonenumber_js_1.parseNumber)(phoneNumber, DEFAULT_COUNTRY);
|
|
98
|
-
if (
|
|
93
|
+
if (Object.keys(parsedPhoneNumber).length === 0) {
|
|
99
94
|
// The number is not valid, so we leave the input string as-is.
|
|
100
95
|
return phoneNumber;
|
|
101
96
|
}
|
|
@@ -116,14 +111,14 @@ function dateDecode(dateNumber) {
|
|
|
116
111
|
if (dateNumber < 0) {
|
|
117
112
|
throw new Error("We don't decode negative dates. Please make sure you have valid data.");
|
|
118
113
|
}
|
|
119
|
-
const dateNumberStr =
|
|
114
|
+
const dateNumberStr = dateNumber.toString().padStart(8, '19700101');
|
|
120
115
|
if (dateNumberStr.length > 8) {
|
|
121
116
|
if (dateNumberStr.endsWith('000000')) {
|
|
122
|
-
return dateNumber ?
|
|
117
|
+
return dateNumber ? (0, date_fns_1.parse)(dateNumberStr.slice(0, 8), 'yyyyMMdd', new Date()) : undefined;
|
|
123
118
|
}
|
|
124
119
|
throw Error("Decoded date is over year 9999. We can't format it properly.");
|
|
125
120
|
}
|
|
126
|
-
return dateNumber ?
|
|
121
|
+
return dateNumber ? (0, date_fns_1.parse)(dateNumberStr, 'yyyyMMdd', new Date()) : undefined;
|
|
127
122
|
}
|
|
128
123
|
/**
|
|
129
124
|
* Converts a backend time number (e.g., health element openingDate) into a Date object.
|
|
@@ -133,7 +128,7 @@ function dateDecode(dateNumber) {
|
|
|
133
128
|
* @see #dateDecode
|
|
134
129
|
*/
|
|
135
130
|
function timeDecode(timeNumber) {
|
|
136
|
-
return timeNumber ?
|
|
131
|
+
return timeNumber ? (0, date_fns_1.parse)(timeNumber.toString(), 'yyyyMMddHHmmss', new Date()) : undefined;
|
|
137
132
|
}
|
|
138
133
|
/**
|
|
139
134
|
* Encodes a Date object into a backend date number (e.g., patient birth date).
|
|
@@ -143,7 +138,7 @@ function timeDecode(timeNumber) {
|
|
|
143
138
|
* @see #timeEncode
|
|
144
139
|
*/
|
|
145
140
|
function dateEncode(date) {
|
|
146
|
-
const dateStr =
|
|
141
|
+
const dateStr = (0, date_fns_1.format)(date, 'yyyyMMdd').padStart(8, '19700101');
|
|
147
142
|
// date is null if the field is not set
|
|
148
143
|
return date ? Number(dateStr) : undefined;
|
|
149
144
|
}
|
|
@@ -155,7 +150,7 @@ function dateEncode(date) {
|
|
|
155
150
|
* @see #dateEncode
|
|
156
151
|
*/
|
|
157
152
|
function timeEncode(date) {
|
|
158
|
-
return date ? Number(
|
|
153
|
+
return date ? Number((0, date_fns_1.format)(date, 'yyyyMMddHHmmss')) : undefined;
|
|
159
154
|
}
|
|
160
155
|
/**
|
|
161
156
|
* Formats a value and a physical unit into text.
|
|
@@ -194,7 +189,10 @@ function money(value) {
|
|
|
194
189
|
* From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...
|
|
195
190
|
*/
|
|
196
191
|
function toUrlParams(params) {
|
|
197
|
-
return
|
|
192
|
+
return Object.entries(params)
|
|
193
|
+
.map(([key, value]) => (value ? key + '=' + value : undefined))
|
|
194
|
+
.filter(Boolean)
|
|
195
|
+
.join('&');
|
|
198
196
|
}
|
|
199
197
|
function personName(person) {
|
|
200
198
|
return `${person.firstName || ''} ${person.lastName || ''}`.trim();
|
|
@@ -208,13 +206,13 @@ function toMoment(epochOrLongCalendar) {
|
|
|
208
206
|
return null;
|
|
209
207
|
}
|
|
210
208
|
if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {
|
|
211
|
-
return
|
|
209
|
+
return (0, date_fns_1.parse)('' + epochOrLongCalendar, 'yyyyMMdd', new Date());
|
|
212
210
|
}
|
|
213
211
|
else if (epochOrLongCalendar >= 18000101000000) {
|
|
214
|
-
return
|
|
212
|
+
return (0, date_fns_1.parse)('' + epochOrLongCalendar, 'yyyyMMddHHmmss', new Date());
|
|
215
213
|
}
|
|
216
214
|
else {
|
|
217
|
-
return
|
|
215
|
+
return new Date(epochOrLongCalendar);
|
|
218
216
|
}
|
|
219
217
|
}
|
|
220
218
|
//# sourceMappingURL=formatting-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/formatting-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport { Moment } from 'moment'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return isValidNumber(phoneNumber)\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (_.isEmpty(parsedPhoneNumber)) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'INTERNATIONAL')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = _.padStart(dateNumber.toString(), 8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD000000').toDate() : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD').toDate() : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? moment(timeNumber.toString(), 'YYYYMMDDHHmmss').toDate() : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = _.padStart(moment(date).format('YYYYMMDD'), 8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(moment(date).format('YYYYMMDDHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return _.filter(_.map(params, (value, key) => (value ? key + '=' + value : undefined))).join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDDhhmmss')\n } else {\n return moment(epochOrLongCalendar)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"formatting-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/formatting-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\nimport { format as formatDate, parse as parseDate } from 'date-fns'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (Object.keys(parsedPhoneNumber).length === 0) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'INTERNATIONAL')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = dateNumber.toString().padStart(8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? parseDate(dateNumberStr.slice(0, 8), 'yyyyMMdd', new Date()) : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? parseDate(dateNumberStr, 'yyyyMMdd', new Date()) : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? parseDate(timeNumber.toString(), 'yyyyMMddHHmmss', new Date()) : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = formatDate(date, 'yyyyMMdd').padStart(8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(formatDate(date, 'yyyyMMddHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return Object.entries(params)\n .map(([key, value]) => (value ? key + '=' + value : undefined))\n .filter(Boolean)\n .join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Date | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return parseDate('' + epochOrLongCalendar, 'yyyyMMdd', new Date())\n } else if (epochOrLongCalendar >= 18000101000000) {\n return parseDate('' + epochOrLongCalendar, 'yyyyMMddHHmmss', new Date())\n } else {\n return new Date(epochOrLongCalendar)\n }\n}\n"]}
|
|
@@ -4,7 +4,6 @@ exports.SPECIALITIES_KEYS = exports.SPECIALITIES = void 0;
|
|
|
4
4
|
exports.isDoctor = isDoctor;
|
|
5
5
|
exports.isDoctorAssistant = isDoctorAssistant;
|
|
6
6
|
exports.getPhoneNumber = getPhoneNumber;
|
|
7
|
-
const _ = require("lodash");
|
|
8
7
|
const models_1 = require("../../icc-api/model/models");
|
|
9
8
|
exports.SPECIALITIES = [
|
|
10
9
|
'ADMINISTRATION',
|
|
@@ -77,7 +76,7 @@ exports.SPECIALITIES = [
|
|
|
77
76
|
* Translation keys for specialities.
|
|
78
77
|
* @see SPECIALITIES
|
|
79
78
|
*/
|
|
80
|
-
exports.SPECIALITIES_KEYS =
|
|
79
|
+
exports.SPECIALITIES_KEYS = Object.fromEntries(exports.SPECIALITIES.map((spec) => [spec, 'hcp-form.SPECIALITIES.' + spec]));
|
|
81
80
|
function isDoctor(nihii) {
|
|
82
81
|
return !!nihii && nihii.length === 11 && nihii.startsWith('1') && !nihii.endsWith('005') && !nihii.endsWith('006');
|
|
83
82
|
}
|
|
@@ -118,6 +117,6 @@ function getPhoneNumber(hcp, maxLength) {
|
|
|
118
117
|
}
|
|
119
118
|
return res && Number(res);
|
|
120
119
|
});
|
|
121
|
-
return (!phoneNumbers.length ||
|
|
120
|
+
return (!phoneNumbers.length || Number.isNaN(phoneNumbers[0]) ? null : phoneNumbers[0]) || null;
|
|
122
121
|
}
|
|
123
122
|
//# sourceMappingURL=hcp-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hcp-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/hcp-util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hcp-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/hcp-util.ts"],"names":[],"mappings":";;;AAiFA,4BAEC;AAED,8CAEC;AAED,wCA+BC;AAxHD,uDAAqE;AAOxD,QAAA,YAAY,GAAkB;IACzC,gBAAgB;IAChB,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,wBAAwB;IACxB,wBAAwB;IACxB,WAAW;IACX,aAAa;IACb,UAAU;IACV,eAAe;IACf,wBAAwB;IACxB,kBAAkB;IAClB,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,gBAAgB;IAChB,eAAe;IACf,QAAQ;IACR,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,cAAc;IACd,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,UAAU;IACV,eAAe;IACf,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,YAAY;IACZ,cAAc;IACd,aAAa;IACb,YAAY;IACZ,0BAA0B;IAC1B,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,cAAc;IACd,SAAS;IACT,aAAa;IACb,WAAW;IACX,SAAS;IACT,YAAY;IACZ,WAAW;CACZ,CAAA;AAED;;;GAGG;AACU,QAAA,iBAAiB,GAA+B,MAAM,CAAC,WAAW,CAAC,oBAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAEpJ,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACpH,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAoB,EAAE,SAA6B;IAChF,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAC/B,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,gBAAO,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,gBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAC1I,CAAA;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAA;QAC9B,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACrB,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACrB,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AACjG,CAAC","sourcesContent":["import { HealthcareParty, Telecom } from '../../icc-api/model/models'\n\nexport interface KendoDropdownSpeciality {\n text: string\n value: string\n}\n\nexport const SPECIALITIES: Array<string> = [\n 'ADMINISTRATION',\n 'CARE_GIVER',\n 'ANATOMOPATHOLOGY',\n 'ANESTHESIOLOGY',\n 'SOCIAL_WORKER',\n 'PHARMA_ASSISTANT',\n 'AUDIOLOGIST',\n 'BACTERIOLOGY',\n 'TRUSS_ORTHOTIST',\n 'CLINICAL_BIOLOGY',\n 'CARDIOLOGY',\n 'GENERAL_SURGERY',\n 'MAXILLOFACIAL_SURGERY',\n 'PLASTIC_SURGERY',\n 'STOMATOLOGICAL_SURGERY',\n 'CARDIOVASCULAR_SURGERY',\n 'DENTISTRY',\n 'DERMATOLOGY',\n 'DIETETIC',\n 'ENDOCRINOLOGY',\n 'OCCUPATIONAL_THERAPIST',\n 'GASTROENTEROLOGY',\n 'GENETIC',\n 'GERIATRICS',\n 'GYNECOLOGY',\n 'HEMATOLOGY',\n 'NURSE',\n 'NURSE_EDUCATOR',\n 'PHYSIOTHERAPY',\n 'SPEECH',\n 'ACUTE_MEDICINE',\n 'GENERAL_MEDICINE',\n 'INTERNAL_MEDICINE',\n 'NUCLEAR_MEDICINE',\n 'PHYSICAL_MEDICINE',\n 'NEONATOLOGY',\n 'NEPHROLOGY',\n 'NEUROSURGERY',\n 'NEUROLOGY',\n 'NEUROPEDIATRICS',\n 'NEUROPSYCHIATRY',\n 'NUTRITIONIST',\n 'ONCOLOGY',\n 'OPHTHALMOLOGY',\n 'ORTHOPEDICS',\n 'ORTHOPTISTE',\n 'OTORHINOLARYNGOLOGY',\n 'PEDIATRICS',\n 'PHARMACOLOGY',\n 'RESPIRATORY',\n 'PODIATRIST',\n 'PUBLIC_HEALTH_PREVENTION',\n 'PROSTHETIST',\n 'PSYCHIATRY',\n 'MEDICAL_PSYCHOLOGY',\n 'RADIODIAGNOSTICS',\n 'RADIOTHERAPY',\n 'RESUSCITATION',\n 'RHEUMATOLOGY',\n 'MIDWIFE',\n 'STOMATOLOGY',\n 'EMERGENCY',\n 'UROLOGY',\n 'TOXICOLOGY',\n 'TRANSPORT',\n]\n\n/**\n * Translation keys for specialities.\n * @see SPECIALITIES\n */\nexport const SPECIALITIES_KEYS: { [spec: string]: string } = Object.fromEntries(SPECIALITIES.map((spec) => [spec, 'hcp-form.SPECIALITIES.' + spec]))\n\nexport function isDoctor(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && !nihii.endsWith('005') && !nihii.endsWith('006')\n}\n\nexport function isDoctorAssistant(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && nihii.endsWith('005') && nihii.endsWith('006')\n}\n\nexport function getPhoneNumber(hcp: HealthcareParty, maxLength: number | undefined): number | null {\n const phoneNumbers = (hcp.addresses || []).map((a) => {\n const t = (a.telecoms || []).find(\n (t: Telecom) => t.telecomType === Telecom.TelecomTypeEnum.Phone.toString() || t.telecomType === Telecom.TelecomTypeEnum.Mobile.toString()\n )\n let res = t && t.telecomNumber\n if (res && maxLength) {\n while (res.length > maxLength) {\n if (res.startsWith('0032')) {\n res = '0' + res.substr(4)\n } else if (res.startsWith('+32')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('32')) {\n res = '0' + res.substr(2)\n } else if (res.startsWith('00')) {\n res = res.substr(2)\n } else if (res.startsWith('0')) {\n res = res.substr(1)\n } else if (res.startsWith('352')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('33')) {\n res = '0' + res.substr(2)\n } else {\n res = res.substr(1)\n }\n }\n }\n return res && Number(res)\n })\n\n return (!phoneNumbers.length || Number.isNaN(phoneNumbers[0]) ? null : phoneNumbers[0]) || null\n}\n"]}
|
|
@@ -6,18 +6,18 @@ exports.isPatientPaymentByIo = isPatientPaymentByIo;
|
|
|
6
6
|
exports.getMembership = getMembership;
|
|
7
7
|
exports.getInsurability = getInsurability;
|
|
8
8
|
exports.isPatientHospitalized = isPatientHospitalized;
|
|
9
|
-
const _ = require("lodash");
|
|
10
9
|
function isBIM(ct1, ct2) {
|
|
11
10
|
//BIM if ct1 ood and ct2 ood
|
|
12
11
|
return +ct1 % 2 !== 0 && +ct2 % 2 !== 0;
|
|
13
12
|
}
|
|
14
13
|
function patientIsBIM(patient) {
|
|
15
|
-
var _a, _b;
|
|
14
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
16
15
|
// FIXME this doesn't check the date of the insurability. It is related to the idea of having only on insurability at a time.
|
|
17
|
-
return isBIM((_a =
|
|
16
|
+
return isBIM((_d = (_c = (_b = (_a = patient === null || patient === void 0 ? void 0 : patient.insurabilities) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.parameters) === null || _c === void 0 ? void 0 : _c.tc1) !== null && _d !== void 0 ? _d : '000', (_h = (_g = (_f = (_e = patient === null || patient === void 0 ? void 0 : patient.insurabilities) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.parameters) === null || _g === void 0 ? void 0 : _g.tc2) !== null && _h !== void 0 ? _h : '000');
|
|
18
17
|
}
|
|
19
18
|
function isPatientPaymentByIo(patient) {
|
|
20
|
-
|
|
19
|
+
var _a, _b, _c;
|
|
20
|
+
const paymentByIo = (_c = (_b = (_a = patient === null || patient === void 0 ? void 0 : patient.insurabilities) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.parameters) === null || _c === void 0 ? void 0 : _c.paymentByIo;
|
|
21
21
|
return paymentByIo === 'true';
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
@@ -26,8 +26,9 @@ function isPatientPaymentByIo(patient) {
|
|
|
26
26
|
* @param patient The patient
|
|
27
27
|
*/
|
|
28
28
|
function getMembership(patient) {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
var _a, _b;
|
|
30
|
+
const ioCode = (_b = (_a = patient === null || patient === void 0 ? void 0 : patient.insurabilities) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.identificationNumber;
|
|
31
|
+
if (ioCode === undefined) {
|
|
31
32
|
// TODO translate
|
|
32
33
|
throw new Error("Le patient n'a pas de données d'assurabilité");
|
|
33
34
|
}
|
|
@@ -39,8 +40,9 @@ function getMembership(patient) {
|
|
|
39
40
|
* @param patient The patient
|
|
40
41
|
*/
|
|
41
42
|
function getInsurability(patient) {
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
var _a;
|
|
44
|
+
const insurability = (_a = patient === null || patient === void 0 ? void 0 : patient.insurabilities) === null || _a === void 0 ? void 0 : _a[0];
|
|
45
|
+
if (insurability === undefined) {
|
|
44
46
|
// TODO translate
|
|
45
47
|
throw new Error("Le patient n'a pas de données d'assurabilité");
|
|
46
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insurability-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/insurability-util.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"insurability-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/insurability-util.ts"],"names":[],"mappings":";;AAEA,sBAGC;AAED,oCAGC;AAED,oDAGC;AAOD,sCAOC;AAOD,0CAOC;AAOD,sDAEC;AAlDD,SAAgB,KAAK,CAAC,GAAoB,EAAE,GAAoB;IAC9D,4BAA4B;IAC5B,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,SAAgB,YAAY,CAAC,OAAgB;;IAC3C,6HAA6H;IAC7H,OAAO,KAAK,CAAC,MAAA,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,0CAAG,CAAC,CAAC,0CAAE,UAAU,0CAAE,GAAG,mCAAI,KAAK,EAAE,MAAA,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,0CAAG,CAAC,CAAC,0CAAE,UAAU,0CAAE,GAAG,mCAAI,KAAK,CAAC,CAAA;AAC9H,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAgB;;IACnD,MAAM,WAAW,GAAG,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,0CAAG,CAAC,CAAC,0CAAE,UAAU,0CAAE,WAAW,CAAA;IACzE,OAAO,WAAW,KAAK,MAAM,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAgB;;IAC5C,MAAM,MAAM,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,0CAAG,CAAC,CAAC,0CAAE,oBAAoB,CAAA;IACjE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,iBAAiB;QACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAAgB;;IAC9C,MAAM,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,0CAAG,CAAC,CAAC,CAAA;IACjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,iBAAiB;QACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,eAAe,IAAI,KAAK,CAAA;AAC1D,CAAC","sourcesContent":["import { Patient, Insurability } from '../../icc-api/model/models'\n\nexport function isBIM(ct1: number | string, ct2: number | string): boolean {\n //BIM if ct1 ood and ct2 ood\n return +ct1 % 2 !== 0 && +ct2 % 2 !== 0\n}\n\nexport function patientIsBIM(patient: Patient) {\n // FIXME this doesn't check the date of the insurability. It is related to the idea of having only on insurability at a time.\n return isBIM(patient?.insurabilities?.[0]?.parameters?.tc1 ?? '000', patient?.insurabilities?.[0]?.parameters?.tc2 ?? '000')\n}\n\nexport function isPatientPaymentByIo(patient: Patient) {\n const paymentByIo = patient?.insurabilities?.[0]?.parameters?.paymentByIo\n return paymentByIo === 'true'\n}\n\n/**\n * Returns the titulary id from patient insurability\n * @throws error if the patient has no insurability data\n * @param patient The patient\n */\nexport function getMembership(patient: Patient): string {\n const ioCode = patient?.insurabilities?.[0]?.identificationNumber\n if (ioCode === undefined) {\n // TODO translate\n throw new Error(\"Le patient n'a pas de données d'assurabilité\")\n }\n return ioCode\n}\n\n/**\n * Returns the insurability from patient\n * @throws error if the patient has no insurability data\n * @param patient The patient\n */\nexport function getInsurability(patient: Patient): Insurability {\n const insurability = patient?.insurabilities?.[0]\n if (insurability === undefined) {\n // TODO translate\n throw new Error(\"Le patient n'a pas de données d'assurabilité\")\n }\n return insurability\n}\n\n/**\n * Returns the insurability from patient\n * @throws error if the patient has no insurability data\n * @param patient\n */\nexport function isPatientHospitalized(patient: Patient): boolean {\n return getInsurability(patient).hospitalisation || false\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASM-based LZMA2/XZ compression using liblzma compiled via Emscripten.
|
|
3
|
+
* The WASM module is lazy-loaded on first use.
|
|
4
|
+
*/
|
|
5
|
+
export declare function lzmaWasmCompress(data: ArrayBuffer | Uint8Array, preset?: number): Promise<ArrayBuffer>;
|
|
6
|
+
export declare function lzmaWasmDecompress(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WASM-based LZMA2/XZ compression using liblzma compiled via Emscripten.
|
|
4
|
+
* The WASM module is lazy-loaded on first use.
|
|
5
|
+
*/
|
|
6
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.lzmaWasmCompress = lzmaWasmCompress;
|
|
17
|
+
exports.lzmaWasmDecompress = lzmaWasmDecompress;
|
|
18
|
+
let modulePromise = null;
|
|
19
|
+
function getModule() {
|
|
20
|
+
if (!modulePromise) {
|
|
21
|
+
modulePromise = (() => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
// Dynamic import of the Emscripten glue code
|
|
23
|
+
const factory = (yield Promise.resolve().then(() => require('../wasm/lzma/lzma.js'))).default;
|
|
24
|
+
return factory();
|
|
25
|
+
}))();
|
|
26
|
+
}
|
|
27
|
+
return modulePromise;
|
|
28
|
+
}
|
|
29
|
+
function lzmaWasmCompress(data_1) {
|
|
30
|
+
return __awaiter(this, arguments, void 0, function* (data, preset = 6) {
|
|
31
|
+
const mod = yield getModule();
|
|
32
|
+
const input = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
|
|
33
|
+
const inputPtr = mod._malloc(input.length);
|
|
34
|
+
if (!inputPtr)
|
|
35
|
+
throw new Error('WASM malloc failed for input');
|
|
36
|
+
try {
|
|
37
|
+
mod.HEAPU8.set(input, inputPtr);
|
|
38
|
+
const ret = mod._lzma_wasm_compress(inputPtr, input.length, preset);
|
|
39
|
+
if (ret !== 0) {
|
|
40
|
+
mod._free_result();
|
|
41
|
+
throw new Error(`LZMA WASM compress failed with code ${ret}`);
|
|
42
|
+
}
|
|
43
|
+
const resultPtr = mod._get_result_ptr();
|
|
44
|
+
const resultLen = mod._get_result_len();
|
|
45
|
+
const output = new Uint8Array(resultLen);
|
|
46
|
+
output.set(mod.HEAPU8.subarray(resultPtr, resultPtr + resultLen));
|
|
47
|
+
mod._free_result();
|
|
48
|
+
return output.buffer;
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
mod._free(inputPtr);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function lzmaWasmDecompress(data) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const mod = yield getModule();
|
|
58
|
+
const input = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
|
|
59
|
+
const inputPtr = mod._malloc(input.length);
|
|
60
|
+
if (!inputPtr)
|
|
61
|
+
throw new Error('WASM malloc failed for input');
|
|
62
|
+
try {
|
|
63
|
+
mod.HEAPU8.set(input, inputPtr);
|
|
64
|
+
const ret = mod._lzma_wasm_decompress(inputPtr, input.length);
|
|
65
|
+
if (ret !== 0) {
|
|
66
|
+
mod._free_result();
|
|
67
|
+
throw new Error(`LZMA WASM decompress failed with code ${ret}`);
|
|
68
|
+
}
|
|
69
|
+
const resultPtr = mod._get_result_ptr();
|
|
70
|
+
const resultLen = mod._get_result_len();
|
|
71
|
+
const output = new Uint8Array(resultLen);
|
|
72
|
+
output.set(mod.HEAPU8.subarray(resultPtr, resultPtr + resultLen));
|
|
73
|
+
mod._free_result();
|
|
74
|
+
return output.buffer;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
mod._free(inputPtr);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=lzma-wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lzma-wasm.js","sourceRoot":"","sources":["../../../icc-x-api/utils/lzma-wasm.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * WASM-based LZMA2/XZ compression using liblzma compiled via Emscripten.\n * The WASM module is lazy-loaded on first use.\n */\n\ninterface LzmaWasmModule {\n _lzma_wasm_compress(ptr: number, len: number, preset: number): number\n _lzma_wasm_decompress(ptr: number, len: number): number\n _get_result_ptr(): number\n _get_result_len(): number\n _free_result(): void\n _malloc(size: number): number\n _free(ptr: number): void\n HEAPU8: Uint8Array\n}\n\ntype ModuleFactory = () => Promise<LzmaWasmModule>\n\nlet modulePromise: Promise<LzmaWasmModule> | null = null\n\nfunction getModule(): Promise<LzmaWasmModule> {\n if (!modulePromise) {\n modulePromise = (async () => {\n // Dynamic import of the Emscripten glue code\n const factory: ModuleFactory = (await import('../wasm/lzma/lzma.js')).default\n return factory()\n })()\n }\n return modulePromise\n}\n\nexport async function lzmaWasmCompress(data: ArrayBuffer | Uint8Array, preset: number = 6): Promise<ArrayBuffer> {\n const mod = await getModule()\n const input = data instanceof ArrayBuffer ? new Uint8Array(data) : data\n\n const inputPtr = mod._malloc(input.length)\n if (!inputPtr) throw new Error('WASM malloc failed for input')\n\n try {\n mod.HEAPU8.set(input, inputPtr)\n const ret = mod._lzma_wasm_compress(inputPtr, input.length, preset)\n if (ret !== 0) {\n mod._free_result()\n throw new Error(`LZMA WASM compress failed with code ${ret}`)\n }\n\n const resultPtr = mod._get_result_ptr()\n const resultLen = mod._get_result_len()\n const output = new Uint8Array(resultLen)\n output.set(mod.HEAPU8.subarray(resultPtr, resultPtr + resultLen))\n mod._free_result()\n return output.buffer\n } finally {\n mod._free(inputPtr)\n }\n}\n\nexport async function lzmaWasmDecompress(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer> {\n const mod = await getModule()\n const input = data instanceof ArrayBuffer ? new Uint8Array(data) : data\n\n const inputPtr = mod._malloc(input.length)\n if (!inputPtr) throw new Error('WASM malloc failed for input')\n\n try {\n mod.HEAPU8.set(input, inputPtr)\n const ret = mod._lzma_wasm_decompress(inputPtr, input.length)\n if (ret !== 0) {\n mod._free_result()\n throw new Error(`LZMA WASM decompress failed with code ${ret}`)\n }\n\n const resultPtr = mod._get_result_ptr()\n const resultLen = mod._get_result_len()\n const output = new Uint8Array(resultLen)\n output.set(mod.HEAPU8.subarray(resultPtr, resultPtr + resultLen))\n mod._free_result()\n return output.buffer\n } finally {\n mod._free(inputPtr)\n }\n}"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple promise-based mutual exclusion lock. Callers acquire the lock and receive a release function;
|
|
3
|
+
* subsequent acquire() calls queue behind the current holder until it releases.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Mutex {
|
|
6
|
+
private queue;
|
|
7
|
+
/**
|
|
8
|
+
* Wait until the lock is available, then acquire it.
|
|
9
|
+
* @returns a release function that MUST be called (typically in a finally block) to let the next waiter proceed.
|
|
10
|
+
*/
|
|
11
|
+
acquire(): Promise<() => void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mutex = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A simple promise-based mutual exclusion lock. Callers acquire the lock and receive a release function;
|
|
6
|
+
* subsequent acquire() calls queue behind the current holder until it releases.
|
|
7
|
+
*/
|
|
8
|
+
class Mutex {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.queue = Promise.resolve();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wait until the lock is available, then acquire it.
|
|
14
|
+
* @returns a release function that MUST be called (typically in a finally block) to let the next waiter proceed.
|
|
15
|
+
*/
|
|
16
|
+
acquire() {
|
|
17
|
+
let release;
|
|
18
|
+
const prev = this.queue;
|
|
19
|
+
this.queue = new Promise((resolve) => {
|
|
20
|
+
release = resolve;
|
|
21
|
+
});
|
|
22
|
+
return prev.then(() => release);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.Mutex = Mutex;
|
|
26
|
+
//# sourceMappingURL=mutex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutex.js","sourceRoot":"","sources":["../../../icc-x-api/utils/mutex.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,KAAK;IAAlB;QACU,UAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAclD,CAAC;IAZC;;;OAGG;IACH,OAAO;QACL,IAAI,OAAoB,CAAA;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,GAAG,OAAO,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;CACF;AAfD,sBAeC","sourcesContent":["/**\n * A simple promise-based mutual exclusion lock. Callers acquire the lock and receive a release function;\n * subsequent acquire() calls queue behind the current holder until it releases.\n */\nexport class Mutex {\n private queue: Promise<void> = Promise.resolve()\n\n /**\n * Wait until the lock is available, then acquire it.\n * @returns a release function that MUST be called (typically in a finally block) to let the next waiter proceed.\n */\n acquire(): Promise<() => void> {\n let release!: () => void\n const prev = this.queue\n this.queue = new Promise<void>((resolve) => {\n release = resolve\n })\n return prev.then(() => release)\n }\n}\n"]}
|
|
@@ -13,9 +13,9 @@ exports.WebSocketWrapper = void 0;
|
|
|
13
13
|
exports.subscribeToEntityEvents = subscribeToEntityEvents;
|
|
14
14
|
const WebSocketNode = require("ws");
|
|
15
15
|
const User_1 = require("../../icc-api/model/User");
|
|
16
|
-
const browser_or_node_1 = require("browser-or-node");
|
|
17
16
|
const HealthcareParty_1 = require("../../icc-api/model/HealthcareParty");
|
|
18
17
|
const Device_1 = require("../../icc-api/model/Device");
|
|
18
|
+
const isNode = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
19
19
|
function subscribeToEntityEvents(basePath, authApi, entityClass, eventTypes, filter, eventFired, options = {}, decryptor) {
|
|
20
20
|
var _a, _b;
|
|
21
21
|
const config = {
|
|
@@ -138,7 +138,7 @@ class WebSocketWrapper {
|
|
|
138
138
|
if (!bearerToken) {
|
|
139
139
|
throw new Error('Cannot obtain JWT for the user');
|
|
140
140
|
}
|
|
141
|
-
const socket =
|
|
141
|
+
const socket = isNode
|
|
142
142
|
? new WebSocketNode(this.url, {
|
|
143
143
|
headers: {
|
|
144
144
|
Authorization: bearerToken,
|
|
@@ -243,7 +243,7 @@ class WebsocketAdapter {
|
|
|
243
243
|
}
|
|
244
244
|
get readyState() {
|
|
245
245
|
if (this.websocket) {
|
|
246
|
-
if (
|
|
246
|
+
if (isNode) {
|
|
247
247
|
switch (this.websocket.readyState) {
|
|
248
248
|
case WebSocketNode.CONNECTING:
|
|
249
249
|
return ReadyState.CONNECTING;
|
|
@@ -287,7 +287,7 @@ class WebsocketAdapter {
|
|
|
287
287
|
}
|
|
288
288
|
onMessage(callback) {
|
|
289
289
|
if (this.websocket) {
|
|
290
|
-
if (
|
|
290
|
+
if (isNode) {
|
|
291
291
|
;
|
|
292
292
|
this.websocket.on('message', (x) => callback(x.toString('utf8')));
|
|
293
293
|
}
|
|
@@ -315,7 +315,7 @@ class WebsocketAdapter {
|
|
|
315
315
|
}
|
|
316
316
|
onOpen(callback) {
|
|
317
317
|
if (this.websocket) {
|
|
318
|
-
if (
|
|
318
|
+
if (isNode) {
|
|
319
319
|
;
|
|
320
320
|
this.websocket.on('open', callback);
|
|
321
321
|
}
|
|
@@ -327,7 +327,7 @@ class WebsocketAdapter {
|
|
|
327
327
|
}
|
|
328
328
|
onClose(callback) {
|
|
329
329
|
if (this.websocket) {
|
|
330
|
-
if (
|
|
330
|
+
if (isNode) {
|
|
331
331
|
;
|
|
332
332
|
this.websocket.on('close', callback);
|
|
333
333
|
}
|
|
@@ -339,7 +339,7 @@ class WebsocketAdapter {
|
|
|
339
339
|
}
|
|
340
340
|
onError(callback) {
|
|
341
341
|
if (this.websocket) {
|
|
342
|
-
if (
|
|
342
|
+
if (isNode) {
|
|
343
343
|
;
|
|
344
344
|
this.websocket.on('error', callback);
|
|
345
345
|
}
|