@icure/api 8.0.8 → 8.0.9
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/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/crypto/ExchangeDataManager.js +3 -2
- package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/KeyRecovery.js +5 -4
- package/icc-x-api/crypto/KeyRecovery.js.map +1 -1
- package/icc-x-api/crypto/RSA.d.ts +4 -1
- package/icc-x-api/crypto/RSA.js +6 -1
- package/icc-x-api/crypto/RSA.js.map +1 -1
- package/icc-x-api/crypto/SecureDelegationsManager.js +2 -1
- package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
- package/icc-x-api/crypto/TransferKeysManager.js +4 -3
- package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
- package/icc-x-api/crypto/UserEncryptionKeysManager.js +2 -1
- package/icc-x-api/crypto/UserEncryptionKeysManager.js.map +1 -1
- package/icc-x-api/crypto/utils.d.ts +1 -4
- package/icc-x-api/crypto/utils.js +6 -8
- package/icc-x-api/crypto/utils.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.js +16 -14
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -2
- package/icc-x-api/icc-calendar-item-x-api.js +17 -17
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-classification-x-api.js +12 -11
- package/icc-x-api/icc-classification-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.d.ts +2 -2
- package/icc-x-api/icc-contact-x-api.js +23 -20
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.js +17 -16
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +13 -12
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.js +18 -16
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-invoice-x-api.js +12 -11
- package/icc-x-api/icc-invoice-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +11 -11
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-message-x-api.js +14 -14
- package/icc-x-api/icc-message-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.js +28 -27
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/icc-receipt-x-api.js +11 -10
- package/icc-x-api/icc-receipt-x-api.js.map +1 -1
- package/icc-x-api/icc-recovery-x-api.js +3 -2
- package/icc-x-api/icc-recovery-x-api.js.map +1 -1
- package/icc-x-api/icc-time-table-x-api.js +9 -8
- package/icc-x-api/icc-time-table-x-api.js.map +1 -1
- package/icc-x-api/icc-topic-x-api.js +13 -13
- package/icc-x-api/icc-topic-x-api.js.map +1 -1
- package/icc-x-api/utils/EntityWithDelegationTypeName.d.ts +17 -1
- package/icc-x-api/utils/EntityWithDelegationTypeName.js +33 -15
- package/icc-x-api/utils/EntityWithDelegationTypeName.js.map +1 -1
- package/package.json +1 -1
- package/test/icc-api/api/IccAnonymousAccessApi.d.ts +1 -0
- package/test/icc-api/api/IccAnonymousAccessApi.js +58 -0
- package/test/icc-api/api/IccAnonymousAccessApi.js.map +1 -0
- package/test/icc-api/api/IccDocumentApi.d.ts +1 -0
- package/test/icc-api/api/IccDocumentApi.js +208 -0
- package/test/icc-api/api/IccDocumentApi.js.map +1 -0
- package/test/icc-api/api/IccGroupApi.d.ts +1 -0
- package/test/icc-api/api/IccGroupApi.js +50 -0
- package/test/icc-api/api/IccGroupApi.js.map +1 -0
- package/test/icc-api/api/IccRecoveryDataApi.d.ts +1 -0
- package/test/icc-api/api/IccRecoveryDataApi.js +95 -0
- package/test/icc-api/api/IccRecoveryDataApi.js.map +1 -0
- package/test/icc-api/api/IccRoleApi.d.ts +1 -0
- package/test/icc-api/api/IccRoleApi.js +34 -0
- package/test/icc-api/api/IccRoleApi.js.map +1 -0
- package/test/icc-api/api/IccUserApi.d.ts +1 -0
- package/test/icc-api/api/IccUserApi.js +96 -0
- package/test/icc-api/api/IccUserApi.js.map +1 -0
- package/test/icc-api/e2e/IccCalendarItemApi.d.ts +1 -0
- package/test/icc-api/e2e/IccCalendarItemApi.js +46 -0
- package/test/icc-api/e2e/IccCalendarItemApi.js.map +1 -0
- package/test/icc-api/model/modelHelpersTest.d.ts +1 -0
- package/test/icc-api/model/modelHelpersTest.js +45 -0
- package/test/icc-api/model/modelHelpersTest.js.map +1 -0
- package/test/icc-x-api/auth/group-switch-test.d.ts +1 -0
- package/test/icc-x-api/auth/group-switch-test.js +81 -0
- package/test/icc-x-api/auth/group-switch-test.js.map +1 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +2 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.js +113 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.js.map +1 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +1 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.js +224 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.js.map +1 -0
- package/test/icc-x-api/autofix-anonymity-test.d.ts +1 -0
- package/test/icc-x-api/autofix-anonymity-test.js +108 -0
- package/test/icc-x-api/autofix-anonymity-test.js.map +1 -0
- package/test/icc-x-api/confidential-entities-test.d.ts +1 -0
- package/test/icc-x-api/confidential-entities-test.js +110 -0
- package/test/icc-x-api/confidential-entities-test.js.map +1 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +1 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.js +276 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.js.map +1 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +16 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.js +422 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +1 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.js +588 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +1 -0
- package/test/icc-x-api/crypto/concurrency.d.ts +1 -0
- package/test/icc-x-api/crypto/concurrency.js +35 -0
- package/test/icc-x-api/crypto/concurrency.js.map +1 -0
- package/test/icc-x-api/crypto/crypto-utils.d.ts +1 -0
- package/test/icc-x-api/crypto/crypto-utils.js +80 -0
- package/test/icc-x-api/crypto/crypto-utils.js.map +1 -0
- package/test/icc-x-api/crypto/cryptoTest.d.ts +2 -0
- package/test/icc-x-api/crypto/cryptoTest.js +302 -0
- package/test/icc-x-api/crypto/cryptoTest.js.map +1 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +1 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +166 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +1 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +690 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/full-crypto-test.d.ts +1 -0
- package/test/icc-x-api/crypto/full-crypto-test.js +457 -0
- package/test/icc-x-api/crypto/full-crypto-test.js.map +1 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +266 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.d.ts +1 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +393 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +1 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.d.ts +1 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js +213 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js.map +1 -0
- package/test/icc-x-api/crypto/shamir.d.ts +2 -0
- package/test/icc-x-api/crypto/shamir.js +166 -0
- package/test/icc-x-api/crypto/shamir.js.map +1 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +1 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +71 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +1 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.js +44 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +246 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +1 -0
- package/test/icc-x-api/entity-with-attachments-api-test.d.ts +1 -0
- package/test/icc-x-api/entity-with-attachments-api-test.js +142 -0
- package/test/icc-x-api/entity-with-attachments-api-test.js.map +1 -0
- package/test/icc-x-api/filters/filters.d.ts +1 -0
- package/test/icc-x-api/filters/filters.js +49 -0
- package/test/icc-x-api/filters/filters.js.map +1 -0
- package/test/icc-x-api/icc-accesslog-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-accesslog-x-api.js +106 -0
- package/test/icc-x-api/icc-accesslog-x-api.js.map +1 -0
- package/test/icc-x-api/icc-auth-api.d.ts +1 -0
- package/test/icc-x-api/icc-auth-api.js +47 -0
- package/test/icc-x-api/icc-auth-api.js.map +1 -0
- package/test/icc-x-api/icc-calendar-item-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-calendar-item-x-api.js +150 -0
- package/test/icc-x-api/icc-calendar-item-x-api.js.map +1 -0
- package/test/icc-x-api/icc-contact-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-contact-x-api.js +279 -0
- package/test/icc-x-api/icc-contact-x-api.js.map +1 -0
- package/test/icc-x-api/icc-form-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-form-x-api.js +98 -0
- package/test/icc-x-api/icc-form-x-api.js.map +1 -0
- package/test/icc-x-api/icc-helement-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-helement-x-api-test.js +153 -0
- package/test/icc-x-api/icc-helement-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-invoice-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-invoice-x-api.js +99 -0
- package/test/icc-x-api/icc-invoice-x-api.js.map +1 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js +221 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-message-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-message-x-api.js +328 -0
- package/test/icc-x-api/icc-message-x-api.js.map +1 -0
- package/test/icc-x-api/icc-patient-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-patient-x-api-test.js +158 -0
- package/test/icc-x-api/icc-patient-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-recovery-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-recovery-x-api.js +170 -0
- package/test/icc-x-api/icc-recovery-x-api.js.map +1 -0
- package/test/icc-x-api/icc-time-table-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-time-table-x-api.js +100 -0
- package/test/icc-x-api/icc-time-table-x-api.js.map +1 -0
- package/test/icc-x-api/icc-topic-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-topic-x-api.js +269 -0
- package/test/icc-x-api/icc-topic-x-api.js.map +1 -0
- package/test/icc-x-api/icc-user-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-user-x-api-test.js +99 -0
- package/test/icc-x-api/icc-user-x-api-test.js.map +1 -0
- package/test/icc-x-api/patient-user.d.ts +2 -0
- package/test/icc-x-api/patient-user.js +104 -0
- package/test/icc-x-api/patient-user.js.map +1 -0
- package/test/icc-x-api/storage/storage.d.ts +1 -0
- package/test/icc-x-api/storage/storage.js +48 -0
- package/test/icc-x-api/storage/storage.js.map +1 -0
- package/test/icc-x-api/test-api-no-parent.d.ts +1 -0
- package/test/icc-x-api/test-api-no-parent.js +79 -0
- package/test/icc-x-api/test-api-no-parent.js.map +1 -0
- package/test/icc-x-api/test-legacy-data-support.d.ts +1 -0
- package/test/icc-x-api/test-legacy-data-support.js +376 -0
- package/test/icc-x-api/test-legacy-data-support.js.map +1 -0
- package/test/icc-x-api/utils/graph-test.d.ts +1 -0
- package/test/icc-x-api/utils/graph-test.js +54 -0
- package/test/icc-x-api/utils/graph-test.js.map +1 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +1 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +364 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +1 -0
- package/test/support/CSM-185.d.ts +1 -0
- package/test/support/CSM-185.js +124 -0
- package/test/support/CSM-185.js.map +1 -0
- package/test/support/CSM-243.d.ts +1 -0
- package/test/support/CSM-243.js +120 -0
- package/test/support/CSM-243.js.map +1 -0
- package/test/support/CSM-87.d.ts +0 -0
- package/test/support/CSM-87.js +21 -0
- package/test/support/CSM-87.js.map +1 -0
- package/test/support/CSM-93.d.ts +1 -0
- package/test/support/CSM-93.js +112 -0
- package/test/support/CSM-93.js.map +1 -0
- package/test/utils/FakeDataOwnerApi.d.ts +32 -0
- package/test/utils/FakeDataOwnerApi.js +136 -0
- package/test/utils/FakeDataOwnerApi.js.map +1 -0
- package/test/utils/FakeEncryptionKeysManager.d.ts +35 -0
- package/test/utils/FakeEncryptionKeysManager.js +87 -0
- package/test/utils/FakeEncryptionKeysManager.js.map +1 -0
- package/test/utils/FakeExchangeDataApi.d.ts +30 -0
- package/test/utils/FakeExchangeDataApi.js +74 -0
- package/test/utils/FakeExchangeDataApi.js.map +1 -0
- package/test/utils/FakeExchangeDataManager.d.ts +40 -0
- package/test/utils/FakeExchangeDataManager.js +89 -0
- package/test/utils/FakeExchangeDataManager.js.map +1 -0
- package/test/utils/FakeExchangeDataMapManager.d.ts +12 -0
- package/test/utils/FakeExchangeDataMapManager.js +38 -0
- package/test/utils/FakeExchangeDataMapManager.js.map +1 -0
- package/test/utils/FakeGenericApi.d.ts +16 -0
- package/test/utils/FakeGenericApi.js +65 -0
- package/test/utils/FakeGenericApi.js.map +1 -0
- package/test/utils/FakeSignatureKeysManager.d.ts +16 -0
- package/test/utils/FakeSignatureKeysManager.js +54 -0
- package/test/utils/FakeSignatureKeysManager.js.map +1 -0
- package/test/utils/TestApi.d.ts +3 -0
- package/test/utils/TestApi.js +30 -0
- package/test/utils/TestApi.js.map +1 -0
- package/test/utils/TestCollectionUtils.d.ts +1 -0
- package/test/utils/TestCollectionUtils.js +109 -0
- package/test/utils/TestCollectionUtils.js.map +1 -0
- package/test/utils/TestCryptoStrategies.d.ts +42 -0
- package/test/utils/TestCryptoStrategies.js +80 -0
- package/test/utils/TestCryptoStrategies.js.map +1 -0
- package/test/utils/TestStorage.d.ts +23 -0
- package/test/utils/TestStorage.js +61 -0
- package/test/utils/TestStorage.js.map +1 -0
- package/test/utils/test_utils.d.ts +76 -0
- package/test/utils/test_utils.js +419 -0
- package/test/utils/test_utils.js.map +1 -0
|
@@ -0,0 +1,279 @@
|
|
|
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 mocha_1 = require("mocha");
|
|
13
|
+
require("isomorphic-fetch");
|
|
14
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
15
|
+
const Patient_1 = require("../../icc-api/model/Patient");
|
|
16
|
+
const chai_1 = require("chai");
|
|
17
|
+
const crypto_1 = require("crypto");
|
|
18
|
+
const test_utils_1 = require("../utils/test_utils");
|
|
19
|
+
const Code_1 = require("../../icc-api/model/Code");
|
|
20
|
+
const Contact_1 = require("../../icc-api/model/Contact");
|
|
21
|
+
const Service_1 = require("../../icc-api/model/Service");
|
|
22
|
+
const Content_1 = require("../../icc-api/model/Content");
|
|
23
|
+
const HealthElement_1 = require("../../icc-api/model/HealthElement");
|
|
24
|
+
const SubContact_1 = require("../../icc-api/model/SubContact");
|
|
25
|
+
const ServiceLink_1 = require("../../icc-api/model/ServiceLink");
|
|
26
|
+
const FilterChainService_1 = require("../../icc-api/model/FilterChainService");
|
|
27
|
+
const ServiceByHcPartyHealthElementIdsFilter_1 = require("../../icc-x-api/filters/ServiceByHcPartyHealthElementIdsFilter");
|
|
28
|
+
const types_1 = require("@icure/test-setup/types");
|
|
29
|
+
const Measure_1 = require("../../icc-api/model/Measure");
|
|
30
|
+
var initApi = test_utils_1.TestUtils.initApi;
|
|
31
|
+
(0, test_utils_1.setLocalStorage)(fetch);
|
|
32
|
+
let env;
|
|
33
|
+
(0, mocha_1.before)(function () {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
this.timeout(600000);
|
|
36
|
+
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
37
|
+
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
function createPatient(patientApiForHcp, hcpUser) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
return patientApiForHcp.createPatientWithUser(hcpUser, yield patientApiForHcp.newInstance(hcpUser, new Patient_1.Patient({
|
|
43
|
+
id: (0, crypto_1.randomUUID)(),
|
|
44
|
+
firstName: 'John',
|
|
45
|
+
lastName: 'Snow',
|
|
46
|
+
note: 'Winter is coming',
|
|
47
|
+
})));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function createHealthElement(healthElementApi, hcpUser, patient) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
return healthElementApi.createHealthElementWithUser(hcpUser, yield healthElementApi.newInstance(hcpUser, patient, new HealthElement_1.HealthElement({
|
|
53
|
+
id: (0, crypto_1.randomUUID)(),
|
|
54
|
+
note: 'My secret note',
|
|
55
|
+
tags: [
|
|
56
|
+
new Code_1.Code({
|
|
57
|
+
id: 'ICURE|MY-CODE|1',
|
|
58
|
+
code: 'MY-CODE',
|
|
59
|
+
type: 'ICURE',
|
|
60
|
+
version: '1',
|
|
61
|
+
}),
|
|
62
|
+
],
|
|
63
|
+
}), { confidential: true }));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function createBasicContact(contactApiForHcp, hcpUser, patient) {
|
|
67
|
+
return contactApiForHcp.newInstance(hcpUser, patient, new Contact_1.Contact({
|
|
68
|
+
id: (0, crypto_1.randomUUID)(),
|
|
69
|
+
services: [
|
|
70
|
+
contactApiForHcp.service().newInstance(hcpUser, new Service_1.Service({
|
|
71
|
+
id: (0, crypto_1.randomUUID)(),
|
|
72
|
+
valueDate: 20220203111034,
|
|
73
|
+
content: { en: new Content_1.Content({ numberValue: 53.5 }) },
|
|
74
|
+
tags: [
|
|
75
|
+
new Code_1.Code({
|
|
76
|
+
id: 'LOINC|29463-7|2',
|
|
77
|
+
code: '29463-7',
|
|
78
|
+
type: 'LOINC',
|
|
79
|
+
version: '2',
|
|
80
|
+
}),
|
|
81
|
+
],
|
|
82
|
+
})),
|
|
83
|
+
],
|
|
84
|
+
descr: 'Weight value',
|
|
85
|
+
}), { confidential: true });
|
|
86
|
+
}
|
|
87
|
+
describe('icc-x-contact-api Tests', () => {
|
|
88
|
+
it('CreateContactWithUser Success for HCP', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
+
// Given
|
|
90
|
+
const { userApi: userApiForHcp, patientApi: patientApiForHcp, contactApi: contactApiForHcp, cryptoApi } = yield initApi(env, test_utils_1.hcp1Username);
|
|
91
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
92
|
+
const patient = yield createPatient(patientApiForHcp, hcpUser);
|
|
93
|
+
const contactToCreate = yield createBasicContact(contactApiForHcp, hcpUser, patient);
|
|
94
|
+
// When
|
|
95
|
+
const createdContact = (yield contactApiForHcp.createContactWithUser(hcpUser, contactToCreate));
|
|
96
|
+
// Then
|
|
97
|
+
const readContact = yield contactApiForHcp.getContactWithUser(hcpUser, createdContact.id);
|
|
98
|
+
(0, chai_1.expect)(readContact).to.not.be.undefined;
|
|
99
|
+
(0, chai_1.expect)(readContact).to.not.be.null;
|
|
100
|
+
(0, chai_1.expect)(readContact.openingDate).to.not.be.undefined;
|
|
101
|
+
(0, chai_1.expect)(readContact.openingDate).to.not.be.null;
|
|
102
|
+
(0, chai_1.expect)(readContact.groupId).to.not.be.undefined;
|
|
103
|
+
(0, chai_1.expect)(readContact.groupId).to.not.be.null;
|
|
104
|
+
(0, chai_1.expect)(readContact.responsible).to.be.equal(hcpUser.healthcarePartyId);
|
|
105
|
+
(0, chai_1.expect)(readContact.id).to.be.equal(contactToCreate.id);
|
|
106
|
+
(0, chai_1.expect)(readContact.descr).to.be.equal(contactToCreate.descr);
|
|
107
|
+
(0, chai_1.expect)(readContact.services[0].responsible).to.be.equal(hcpUser.healthcarePartyId);
|
|
108
|
+
(0, chai_1.expect)(readContact.services[0].id).to.be.equal(contactToCreate.services[0].id);
|
|
109
|
+
(0, chai_1.expect)(readContact.services[0].valueDate).to.be.equal(contactToCreate.services[0].valueDate);
|
|
110
|
+
(0, chai_1.expect)(readContact.services[0].tags[0].id).to.be.equal(contactToCreate.services[0].tags[0].id);
|
|
111
|
+
(0, chai_1.expect)(yield cryptoApi.xapi.encryptionKeysOf({ entity: readContact, type: icc_x_api_1.EntityWithDelegationTypeName.Contact }, undefined)).to.have.length(1);
|
|
112
|
+
const decryptedPatientIds = yield contactApiForHcp.decryptPatientIdOf(readContact);
|
|
113
|
+
(0, chai_1.expect)(decryptedPatientIds).to.have.length(1);
|
|
114
|
+
(0, chai_1.expect)(decryptedPatientIds[0]).to.equal(patient.id);
|
|
115
|
+
}));
|
|
116
|
+
it('Filter Services By HealthElementId - Success', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
117
|
+
// Given
|
|
118
|
+
const { userApi: userApiForHcp, patientApi: patientApiForHcp, contactApi: contactApiForHcp, healthcareElementApi: hElementApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
119
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
120
|
+
const patient = yield createPatient(patientApiForHcp, hcpUser);
|
|
121
|
+
const healthElement = yield createHealthElement(hElementApiForHcp, hcpUser, patient);
|
|
122
|
+
const contactToCreate = yield createBasicContact(contactApiForHcp, hcpUser, patient).then((contact) => {
|
|
123
|
+
return Object.assign(Object.assign({}, contact), { subContacts: [
|
|
124
|
+
new SubContact_1.SubContact({
|
|
125
|
+
id: (0, crypto_1.randomUUID)(),
|
|
126
|
+
healthElementId: healthElement.id,
|
|
127
|
+
services: [new ServiceLink_1.ServiceLink({ serviceId: contact.services[0].id })],
|
|
128
|
+
}),
|
|
129
|
+
] });
|
|
130
|
+
});
|
|
131
|
+
const createdContact = (yield contactApiForHcp.createContactWithUser(hcpUser, new Contact_1.Contact(contactToCreate)));
|
|
132
|
+
(0, chai_1.assert)(createdContact != null);
|
|
133
|
+
// When
|
|
134
|
+
const foundServices = yield contactApiForHcp.filterServicesBy(undefined, undefined, new FilterChainService_1.FilterChainService({
|
|
135
|
+
filter: new ServiceByHcPartyHealthElementIdsFilter_1.ServiceByHcPartyHealthElementIdsFilter({
|
|
136
|
+
healthcarePartyId: hcpUser.healthcarePartyId,
|
|
137
|
+
healthElementIds: [healthElement.id],
|
|
138
|
+
}),
|
|
139
|
+
}));
|
|
140
|
+
// Then
|
|
141
|
+
(0, chai_1.assert)(foundServices.rows.length == 1);
|
|
142
|
+
(0, chai_1.assert)(foundServices.rows[0].id == createdContact.services[0].id);
|
|
143
|
+
(0, chai_1.assert)(foundServices.rows[0].healthElementsIds.find((heId) => heId == healthElement.id) != undefined);
|
|
144
|
+
}));
|
|
145
|
+
it('contacts findBy for HCP GET and POSt', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
|
+
// Given
|
|
147
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, contactApi: contactApiForHcp, healthcareElementApi: hElementApiForHcp, cryptoApi: cryptoApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
148
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
149
|
+
const patient = (yield createPatient(patientApiForHcp, hcpUser));
|
|
150
|
+
const healthElement = yield createHealthElement(hElementApiForHcp, hcpUser, patient);
|
|
151
|
+
const contactToCreate = yield createBasicContact(contactApiForHcp, hcpUser, patient).then((contact) => {
|
|
152
|
+
return Object.assign(Object.assign({}, contact), { subContacts: [
|
|
153
|
+
new SubContact_1.SubContact({
|
|
154
|
+
id: (0, crypto_1.randomUUID)(),
|
|
155
|
+
healthElementId: healthElement.id,
|
|
156
|
+
services: [new ServiceLink_1.ServiceLink({ serviceId: contact.services[0].id })],
|
|
157
|
+
}),
|
|
158
|
+
] });
|
|
159
|
+
});
|
|
160
|
+
const createdContact = (yield contactApiForHcp.createContactWithUser(hcpUser, contactToCreate));
|
|
161
|
+
// When
|
|
162
|
+
const foundContats = yield contactApiForHcp.findBy(hcpUser.healthcarePartyId, patient, false);
|
|
163
|
+
const foundContatsUsingPost = yield contactApiForHcp.findBy(hcpUser.healthcarePartyId, patient, true);
|
|
164
|
+
// Then
|
|
165
|
+
(0, chai_1.assert)(foundContats.length == 1, 'Found items should be 1');
|
|
166
|
+
(0, chai_1.assert)(foundContats[0].id == contactToCreate.id, 'Found item should be the same as the created one');
|
|
167
|
+
(0, chai_1.assert)(foundContatsUsingPost.length == 1, 'Found items using post should be 1');
|
|
168
|
+
(0, chai_1.assert)(foundContatsUsingPost[0].id == createdContact.id, 'Found item using post should be the same as the created one');
|
|
169
|
+
}));
|
|
170
|
+
it('Share with should work as expected', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
171
|
+
const api1 = yield initApi(env, test_utils_1.hcp1Username);
|
|
172
|
+
const user1 = yield api1.userApi.getCurrentUser();
|
|
173
|
+
const api2 = yield initApi(env, test_utils_1.hcp2Username);
|
|
174
|
+
const user2 = yield api2.userApi.getCurrentUser();
|
|
175
|
+
const samplePatient = yield api1.patientApi.createPatientWithUser(user1, yield api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' }));
|
|
176
|
+
const encryptedField = 'Something encrypted';
|
|
177
|
+
const entity = yield api1.calendarItemApi.createCalendarItemWithHcParty(user1, yield api1.calendarItemApi.newInstancePatient(user1, samplePatient, { details: encryptedField }));
|
|
178
|
+
(0, chai_1.expect)(entity.details).to.be.equal(encryptedField);
|
|
179
|
+
yield api2.calendarItemApi
|
|
180
|
+
.getCalendarItemWithUser(user2, entity.id)
|
|
181
|
+
.then(() => {
|
|
182
|
+
throw new Error('Should not be able to get the entity');
|
|
183
|
+
})
|
|
184
|
+
.catch(() => {
|
|
185
|
+
/* expected */
|
|
186
|
+
});
|
|
187
|
+
yield api1.calendarItemApi.shareWith(user2.healthcarePartyId, entity);
|
|
188
|
+
const retrieved = yield api2.calendarItemApi.getCalendarItemWithUser(user2, entity.id);
|
|
189
|
+
(0, chai_1.expect)(retrieved.details).to.be.equal(encryptedField);
|
|
190
|
+
(0, chai_1.expect)((yield api2.calendarItemApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id);
|
|
191
|
+
}));
|
|
192
|
+
it('Instanciation of old Measure should be mapped to new Measure with referenceRange', () => {
|
|
193
|
+
const oldMeasure = {
|
|
194
|
+
min: 0,
|
|
195
|
+
max: 10,
|
|
196
|
+
};
|
|
197
|
+
const newMeasure = new Measure_1.Measure(Object.assign({}, oldMeasure));
|
|
198
|
+
(0, chai_1.expect)(newMeasure.referenceRange).to.not.be.undefined;
|
|
199
|
+
(0, chai_1.expect)(newMeasure.referenceRange).to.not.undefined;
|
|
200
|
+
(0, chai_1.expect)(newMeasure.referenceRange).to.have.length(1);
|
|
201
|
+
(0, chai_1.expect)(newMeasure.referenceRange[0].low).to.be.equal(oldMeasure.min);
|
|
202
|
+
(0, chai_1.expect)(newMeasure.referenceRange[0].high).to.be.equal(oldMeasure.max);
|
|
203
|
+
(0, chai_1.expect)(Object.keys(newMeasure)).to.not.contain('min');
|
|
204
|
+
(0, chai_1.expect)(Object.keys(newMeasure)).to.not.contain('max');
|
|
205
|
+
});
|
|
206
|
+
it('Instanciation of Service with old Measure should be mapped to new Measure with referenceRange', () => {
|
|
207
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
208
|
+
const serviceJson = {
|
|
209
|
+
id: 'serviceId',
|
|
210
|
+
valueDate: 20220203111034,
|
|
211
|
+
content: {
|
|
212
|
+
en: {
|
|
213
|
+
numberValue: 53.5,
|
|
214
|
+
measureValue: {
|
|
215
|
+
min: 0,
|
|
216
|
+
max: 10,
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
tags: [
|
|
221
|
+
{
|
|
222
|
+
id: 'LOINC|29463-7|2',
|
|
223
|
+
code: '29463-7',
|
|
224
|
+
type: 'LOINC',
|
|
225
|
+
version: '2',
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
const service = new Service_1.Service(JSON.parse(JSON.stringify(serviceJson)));
|
|
230
|
+
(0, chai_1.expect)((_b = (_a = service.content) === null || _a === void 0 ? void 0 : _a.en) === null || _b === void 0 ? void 0 : _b.measureValue).to.not.be.undefined;
|
|
231
|
+
(0, chai_1.expect)((_e = (_d = (_c = service.content) === null || _c === void 0 ? void 0 : _c.en) === null || _d === void 0 ? void 0 : _d.measureValue) === null || _e === void 0 ? void 0 : _e.referenceRange).to.not.be.undefined;
|
|
232
|
+
(0, chai_1.expect)((_h = (_g = (_f = service.content) === null || _f === void 0 ? void 0 : _f.en) === null || _g === void 0 ? void 0 : _g.measureValue) === null || _h === void 0 ? void 0 : _h.referenceRange).to.have.length(1);
|
|
233
|
+
(0, chai_1.expect)((_l = (_k = (_j = service.content) === null || _j === void 0 ? void 0 : _j.en) === null || _k === void 0 ? void 0 : _k.measureValue) === null || _l === void 0 ? void 0 : _l.referenceRange[0].low).to.be.equal(serviceJson.content.en.measureValue.min);
|
|
234
|
+
(0, chai_1.expect)((_p = (_o = (_m = service.content) === null || _m === void 0 ? void 0 : _m.en) === null || _o === void 0 ? void 0 : _o.measureValue) === null || _p === void 0 ? void 0 : _p.referenceRange[0].high).to.be.equal(serviceJson.content.en.measureValue.max);
|
|
235
|
+
(0, chai_1.expect)(Object.keys((_r = (_q = service.content) === null || _q === void 0 ? void 0 : _q.en) === null || _r === void 0 ? void 0 : _r.measureValue)).to.not.contain('min');
|
|
236
|
+
(0, chai_1.expect)(Object.keys((_t = (_s = service.content) === null || _s === void 0 ? void 0 : _s.en) === null || _t === void 0 ? void 0 : _t.measureValue)).to.not.contain('max');
|
|
237
|
+
});
|
|
238
|
+
it('Instanciation of Contact with old Measure should be mapped to new Measure with referenceRange', () => {
|
|
239
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
240
|
+
const contactJson = {
|
|
241
|
+
id: 'contactId',
|
|
242
|
+
services: [
|
|
243
|
+
{
|
|
244
|
+
id: 'serviceId',
|
|
245
|
+
valueDate: 20220203111034,
|
|
246
|
+
content: {
|
|
247
|
+
en: {
|
|
248
|
+
numberValue: 53.5,
|
|
249
|
+
measureValue: {
|
|
250
|
+
min: 0,
|
|
251
|
+
max: 10,
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
tags: [
|
|
256
|
+
{
|
|
257
|
+
id: 'LOINC|29463-7|2',
|
|
258
|
+
code: '29463-7',
|
|
259
|
+
type: 'LOINC',
|
|
260
|
+
version: '2',
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
descr: 'Weight value',
|
|
266
|
+
};
|
|
267
|
+
const contact = new Contact_1.Contact(JSON.parse(JSON.stringify(contactJson)));
|
|
268
|
+
(0, chai_1.expect)(contact.services).to.not.be.undefined;
|
|
269
|
+
(0, chai_1.expect)(contact.services).to.have.length(1);
|
|
270
|
+
(0, chai_1.expect)((_b = (_a = contact.services[0].content) === null || _a === void 0 ? void 0 : _a.en) === null || _b === void 0 ? void 0 : _b.measureValue).to.not.be.undefined;
|
|
271
|
+
(0, chai_1.expect)((_e = (_d = (_c = contact.services[0].content) === null || _c === void 0 ? void 0 : _c.en) === null || _d === void 0 ? void 0 : _d.measureValue) === null || _e === void 0 ? void 0 : _e.referenceRange).to.not.be.undefined;
|
|
272
|
+
(0, chai_1.expect)((_h = (_g = (_f = contact.services[0].content) === null || _f === void 0 ? void 0 : _f.en) === null || _g === void 0 ? void 0 : _g.measureValue) === null || _h === void 0 ? void 0 : _h.referenceRange).to.have.length(1);
|
|
273
|
+
(0, chai_1.expect)((_l = (_k = (_j = contact.services[0].content) === null || _j === void 0 ? void 0 : _j.en) === null || _k === void 0 ? void 0 : _k.measureValue) === null || _l === void 0 ? void 0 : _l.referenceRange[0].low).to.be.equal(contactJson.services[0].content.en.measureValue.min);
|
|
274
|
+
(0, chai_1.expect)((_p = (_o = (_m = contact.services[0].content) === null || _m === void 0 ? void 0 : _m.en) === null || _o === void 0 ? void 0 : _o.measureValue) === null || _p === void 0 ? void 0 : _p.referenceRange[0].high).to.be.equal(contactJson.services[0].content.en.measureValue.max);
|
|
275
|
+
(0, chai_1.expect)(Object.keys((_r = (_q = contact.services[0].content) === null || _q === void 0 ? void 0 : _q.en) === null || _r === void 0 ? void 0 : _r.measureValue)).to.not.contain('min');
|
|
276
|
+
(0, chai_1.expect)(Object.keys((_t = (_s = contact.services[0].content) === null || _s === void 0 ? void 0 : _s.en) === null || _t === void 0 ? void 0 : _t.measureValue)).to.not.contain('max');
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
//# sourceMappingURL=icc-contact-x-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icc-contact-x-api.js","sourceRoot":"","sources":["../../../test/icc-x-api/icc-contact-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { before } from 'mocha'\n\nimport 'isomorphic-fetch'\n\nimport { EntityWithDelegationTypeName, IccContactXApi, IccHelementXApi, IccPatientXApi } from '../../icc-x-api'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { assert, expect } from 'chai'\nimport { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, hcp1Username, hcp2Username, setLocalStorage, TestUtils } from '../utils/test_utils'\nimport { Code } from '../../icc-api/model/Code'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { Service } from '../../icc-api/model/Service'\nimport { Content } from '../../icc-api/model/Content'\nimport { User } from '../../icc-api/model/User'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { SubContact } from '../../icc-api/model/SubContact'\nimport { ServiceLink } from '../../icc-api/model/ServiceLink'\nimport { FilterChainService } from '../../icc-api/model/FilterChainService'\nimport { ServiceByHcPartyHealthElementIdsFilter } from '../../icc-x-api/filters/ServiceByHcPartyHealthElementIdsFilter'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { Measure } from '../../icc-api/model/Measure'\nimport initApi = TestUtils.initApi\n\nsetLocalStorage(fetch)\nlet env: TestVars\n\nbefore(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n})\n\nasync function createPatient(patientApiForHcp: IccPatientXApi, hcpUser: User) {\n return patientApiForHcp.createPatientWithUser(\n hcpUser,\n await patientApiForHcp.newInstance(\n hcpUser,\n new Patient({\n id: randomUUID(),\n firstName: 'John',\n lastName: 'Snow',\n note: 'Winter is coming',\n })\n )\n )\n}\n\nasync function createHealthElement(healthElementApi: IccHelementXApi, hcpUser: User, patient: Patient) {\n return healthElementApi.createHealthElementWithUser(\n hcpUser,\n await healthElementApi.newInstance(\n hcpUser,\n patient,\n new HealthElement({\n id: randomUUID(),\n note: 'My secret note',\n tags: [\n new Code({\n id: 'ICURE|MY-CODE|1',\n code: 'MY-CODE',\n type: 'ICURE',\n version: '1',\n }),\n ],\n }),\n { confidential: true }\n )\n )\n}\n\nfunction createBasicContact(contactApiForHcp: IccContactXApi, hcpUser: User, patient: Patient) {\n return contactApiForHcp.newInstance(\n hcpUser,\n patient,\n new Contact({\n id: randomUUID(),\n services: [\n contactApiForHcp.service().newInstance(\n hcpUser,\n new Service({\n id: randomUUID(),\n valueDate: 20220203111034,\n content: { en: new Content({ numberValue: 53.5 }) },\n tags: [\n new Code({\n id: 'LOINC|29463-7|2',\n code: '29463-7',\n type: 'LOINC',\n version: '2',\n }),\n ],\n })\n ),\n ],\n descr: 'Weight value',\n }),\n { confidential: true }\n )\n}\n\ndescribe('icc-x-contact-api Tests', () => {\n it('CreateContactWithUser Success for HCP', async () => {\n // Given\n const { userApi: userApiForHcp, patientApi: patientApiForHcp, contactApi: contactApiForHcp, cryptoApi } = await initApi(env!, hcp1Username)\n\n const hcpUser = await userApiForHcp.getCurrentUser()\n\n const patient = await createPatient(patientApiForHcp, hcpUser)\n const contactToCreate = await createBasicContact(contactApiForHcp, hcpUser, patient)\n\n // When\n const createdContact = (await contactApiForHcp.createContactWithUser(hcpUser, contactToCreate)) as Contact\n\n // Then\n const readContact = await contactApiForHcp.getContactWithUser(hcpUser, createdContact.id!)\n expect(readContact).to.not.be.undefined\n expect(readContact).to.not.be.null\n expect(readContact.openingDate).to.not.be.undefined\n expect(readContact.openingDate).to.not.be.null\n expect(readContact.groupId).to.not.be.undefined\n expect(readContact.groupId).to.not.be.null\n expect(readContact.responsible).to.be.equal(hcpUser.healthcarePartyId)\n expect(readContact.id).to.be.equal(contactToCreate.id)\n expect(readContact.descr).to.be.equal(contactToCreate.descr)\n expect(readContact.services![0].responsible).to.be.equal(hcpUser.healthcarePartyId)\n expect(readContact.services![0].id).to.be.equal(contactToCreate.services![0].id)\n expect(readContact.services![0].valueDate).to.be.equal(contactToCreate.services![0].valueDate)\n expect(readContact.services![0].tags![0].id).to.be.equal(contactToCreate.services![0].tags![0].id!)\n expect(await cryptoApi.xapi.encryptionKeysOf({ entity: readContact, type: EntityWithDelegationTypeName.Contact }, undefined)).to.have.length(1)\n const decryptedPatientIds = await contactApiForHcp.decryptPatientIdOf(readContact)\n expect(decryptedPatientIds).to.have.length(1)\n expect(decryptedPatientIds[0]).to.equal(patient.id)\n })\n\n it('Filter Services By HealthElementId - Success', async () => {\n // Given\n const {\n userApi: userApiForHcp,\n patientApi: patientApiForHcp,\n contactApi: contactApiForHcp,\n healthcareElementApi: hElementApiForHcp,\n } = await initApi(env!, hcp1Username)\n\n const hcpUser = await userApiForHcp.getCurrentUser()\n\n const patient = await createPatient(patientApiForHcp, hcpUser)\n const healthElement = await createHealthElement(hElementApiForHcp, hcpUser, patient)\n const contactToCreate = await createBasicContact(contactApiForHcp, hcpUser, patient).then((contact) => {\n return {\n ...contact,\n subContacts: [\n new SubContact({\n id: randomUUID(),\n healthElementId: healthElement!.id!,\n services: [new ServiceLink({ serviceId: contact.services![0].id })],\n }),\n ],\n }\n })\n\n const createdContact = (await contactApiForHcp.createContactWithUser(hcpUser, new Contact(contactToCreate))) as Contact\n assert(createdContact != null)\n\n // When\n const foundServices = await contactApiForHcp.filterServicesBy(\n undefined,\n undefined,\n new FilterChainService({\n filter: new ServiceByHcPartyHealthElementIdsFilter({\n healthcarePartyId: hcpUser.healthcarePartyId!,\n healthElementIds: [healthElement!.id!],\n }),\n })\n )\n\n // Then\n assert(foundServices.rows!.length == 1)\n assert(foundServices.rows![0].id == createdContact.services![0].id)\n assert(foundServices.rows![0].healthElementsIds!.find((heId) => heId == healthElement!.id!) != undefined)\n })\n\n it('contacts findBy for HCP GET and POSt', async () => {\n // Given\n const {\n userApi: userApiForHcp,\n dataOwnerApi: dataOwnerApiForHcp,\n patientApi: patientApiForHcp,\n contactApi: contactApiForHcp,\n healthcareElementApi: hElementApiForHcp,\n cryptoApi: cryptoApiForHcp,\n } = await initApi(env, hcp1Username)\n const hcpUser = await userApiForHcp.getCurrentUser()\n\n const patient = (await createPatient(patientApiForHcp, hcpUser)) as Patient\n const healthElement = await createHealthElement(hElementApiForHcp, hcpUser, patient)\n const contactToCreate = await createBasicContact(contactApiForHcp, hcpUser, patient).then((contact) => {\n return {\n ...contact,\n subContacts: [\n new SubContact({\n id: randomUUID(),\n healthElementId: healthElement!.id!,\n services: [new ServiceLink({ serviceId: contact.services![0].id })],\n }),\n ],\n }\n })\n\n const createdContact = (await contactApiForHcp.createContactWithUser(hcpUser, contactToCreate)) as Contact\n\n // When\n const foundContats = await contactApiForHcp.findBy(hcpUser.healthcarePartyId!, patient, false)\n const foundContatsUsingPost = await contactApiForHcp.findBy(hcpUser.healthcarePartyId!, patient, true)\n\n // Then\n assert(foundContats.length == 1, 'Found items should be 1')\n assert(foundContats[0].id == contactToCreate.id, 'Found item should be the same as the created one')\n\n assert(foundContatsUsingPost.length == 1, 'Found items using post should be 1')\n assert(foundContatsUsingPost[0].id == createdContact.id, 'Found item using post should be the same as the created one')\n })\n\n it('Share with should work as expected', async () => {\n const api1 = await initApi(env!, hcp1Username)\n const user1 = await api1.userApi.getCurrentUser()\n const api2 = await initApi(env!, hcp2Username)\n const user2 = await api2.userApi.getCurrentUser()\n const samplePatient = await api1.patientApi.createPatientWithUser(\n user1,\n await api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' })\n )\n const encryptedField = 'Something encrypted'\n const entity = await api1.calendarItemApi.createCalendarItemWithHcParty(\n user1,\n await api1.calendarItemApi.newInstancePatient(user1, samplePatient, { details: encryptedField })\n )\n expect(entity.details).to.be.equal(encryptedField)\n await api2.calendarItemApi\n .getCalendarItemWithUser(user2, entity.id)\n .then(() => {\n throw new Error('Should not be able to get the entity')\n })\n .catch(() => {\n /* expected */\n })\n await api1.calendarItemApi.shareWith(user2.healthcarePartyId!, entity)\n const retrieved = await api2.calendarItemApi.getCalendarItemWithUser(user2, entity.id)\n expect(retrieved.details).to.be.equal(encryptedField)\n expect((await api2.calendarItemApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id)\n })\n\n it('Instanciation of old Measure should be mapped to new Measure with referenceRange', () => {\n const oldMeasure = {\n min: 0,\n max: 10,\n }\n\n const newMeasure = new Measure({ ...oldMeasure })\n\n expect(newMeasure.referenceRange).to.not.be.undefined\n expect(newMeasure.referenceRange).to.not.undefined\n expect(newMeasure.referenceRange).to.have.length(1)\n expect(newMeasure.referenceRange![0].low).to.be.equal(oldMeasure.min)\n expect(newMeasure.referenceRange![0].high).to.be.equal(oldMeasure.max)\n\n expect(Object.keys(newMeasure)).to.not.contain('min')\n expect(Object.keys(newMeasure)).to.not.contain('max')\n })\n\n it('Instanciation of Service with old Measure should be mapped to new Measure with referenceRange', () => {\n const serviceJson = {\n id: 'serviceId',\n valueDate: 20220203111034,\n content: {\n en: {\n numberValue: 53.5,\n measureValue: {\n min: 0,\n max: 10,\n },\n },\n },\n tags: [\n {\n id: 'LOINC|29463-7|2',\n code: '29463-7',\n type: 'LOINC',\n version: '2',\n },\n ],\n }\n\n const service = new Service(JSON.parse(JSON.stringify(serviceJson)))\n\n expect(service.content?.en?.measureValue).to.not.be.undefined\n expect(service.content?.en?.measureValue?.referenceRange).to.not.be.undefined\n expect(service.content?.en?.measureValue?.referenceRange).to.have.length(1)\n expect(service.content?.en?.measureValue?.referenceRange![0].low).to.be.equal(serviceJson.content.en.measureValue.min)\n expect(service.content?.en?.measureValue?.referenceRange![0].high).to.be.equal(serviceJson.content.en.measureValue.max)\n\n expect(Object.keys(service.content?.en?.measureValue!)).to.not.contain('min')\n expect(Object.keys(service.content?.en?.measureValue!)).to.not.contain('max')\n })\n\n it('Instanciation of Contact with old Measure should be mapped to new Measure with referenceRange', () => {\n const contactJson = {\n id: 'contactId',\n services: [\n {\n id: 'serviceId',\n valueDate: 20220203111034,\n content: {\n en: {\n numberValue: 53.5,\n measureValue: {\n min: 0,\n max: 10,\n },\n },\n },\n tags: [\n {\n id: 'LOINC|29463-7|2',\n code: '29463-7',\n type: 'LOINC',\n version: '2',\n },\n ],\n },\n ],\n descr: 'Weight value',\n }\n\n const contact = new Contact(JSON.parse(JSON.stringify(contactJson)))\n\n expect(contact.services).to.not.be.undefined\n expect(contact.services).to.have.length(1)\n expect(contact.services![0].content?.en?.measureValue).to.not.be.undefined\n expect(contact.services![0].content?.en?.measureValue?.referenceRange).to.not.be.undefined\n expect(contact.services![0].content?.en?.measureValue?.referenceRange).to.have.length(1)\n expect(contact.services![0].content?.en?.measureValue?.referenceRange![0].low).to.be.equal(contactJson.services[0].content.en.measureValue.min)\n expect(contact.services![0].content?.en?.measureValue?.referenceRange![0].high).to.be.equal(contactJson.services[0].content.en.measureValue.max)\n\n expect(Object.keys(contact.services![0].content?.en?.measureValue!)).to.not.contain('min')\n expect(Object.keys(contact.services![0].content?.en?.measureValue!)).to.not.contain('max')\n })\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'isomorphic-fetch';
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
require("isomorphic-fetch");
|
|
13
|
+
const test_utils_1 = require("../utils/test_utils");
|
|
14
|
+
const mocha_1 = require("mocha");
|
|
15
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
16
|
+
const icc_api_1 = require("../../icc-api");
|
|
17
|
+
const Patient_1 = require("../../icc-api/model/Patient");
|
|
18
|
+
const crypto_1 = require("crypto");
|
|
19
|
+
const Form_1 = require("../../icc-api/model/Form");
|
|
20
|
+
const chai_1 = require("chai");
|
|
21
|
+
var initApi = test_utils_1.TestUtils.initApi;
|
|
22
|
+
const types_1 = require("@icure/test-setup/types");
|
|
23
|
+
const AuthenticationProvider_1 = require("../../icc-x-api/auth/AuthenticationProvider");
|
|
24
|
+
(0, test_utils_1.setLocalStorage)(fetch);
|
|
25
|
+
let env;
|
|
26
|
+
describe('icc-calendar-item-x-api Tests', () => {
|
|
27
|
+
(0, mocha_1.before)(function () {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
this.timeout(600000);
|
|
30
|
+
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
31
|
+
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
function createPatient(patientApiForHcp, hcpUser) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return patientApiForHcp.createPatientWithUser(hcpUser, yield patientApiForHcp.newInstance(hcpUser, new Patient_1.Patient({
|
|
37
|
+
id: (0, crypto_1.randomUUID)(),
|
|
38
|
+
firstName: 'John',
|
|
39
|
+
lastName: 'Snow',
|
|
40
|
+
note: 'Winter is coming',
|
|
41
|
+
})));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
it('Test', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
// Given
|
|
46
|
+
const username = env.dataOwnerDetails[test_utils_1.hcp1Username].user;
|
|
47
|
+
const password = env.dataOwnerDetails[test_utils_1.hcp1Username].password;
|
|
48
|
+
const authProvider = new AuthenticationProvider_1.BasicAuthenticationProvider(username, password);
|
|
49
|
+
const userApi = new icc_x_api_1.IccUserXApi(env.iCureUrl, {}, authProvider, null, fetch);
|
|
50
|
+
const formApi = new icc_api_1.IccFormApi(env.iCureUrl, {}, authProvider, fetch);
|
|
51
|
+
const currentUser = yield userApi.getCurrentUser();
|
|
52
|
+
}));
|
|
53
|
+
it('Test findBy', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
|
+
// Given
|
|
55
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, cryptoApi: cryptoApiForHcp, dataOwnerApi: dateOwnerApiForHcp, formApi: formXApi, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
56
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
57
|
+
const patient = (yield createPatient(patientApiForHcp, hcpUser));
|
|
58
|
+
const form = new Form_1.Form({
|
|
59
|
+
id: (0, crypto_1.randomUUID)(),
|
|
60
|
+
created: new Date().getTime(),
|
|
61
|
+
modified: new Date().getTime(),
|
|
62
|
+
responsible: hcpUser.healthcarePartyId,
|
|
63
|
+
author: hcpUser.id,
|
|
64
|
+
codes: [],
|
|
65
|
+
tags: [],
|
|
66
|
+
user: hcpUser.id,
|
|
67
|
+
patient: patient.id,
|
|
68
|
+
});
|
|
69
|
+
const formToCreate = yield formXApi.newInstance(hcpUser, patient, form);
|
|
70
|
+
const createdForm = yield formXApi.createForm(formToCreate);
|
|
71
|
+
const foundItems = (yield formXApi.findBy(hcpUser.healthcarePartyId, patient, false));
|
|
72
|
+
const foundItemsUsingPost = (yield formXApi.findBy(hcpUser.healthcarePartyId, patient, true));
|
|
73
|
+
(0, chai_1.assert)(foundItems.length == 1, 'Found items should be 1');
|
|
74
|
+
(0, chai_1.assert)(foundItems[0].id == createdForm.id, 'Found item should be the created one');
|
|
75
|
+
(0, chai_1.assert)(foundItemsUsingPost.length == 1, 'Found items using post should be 1');
|
|
76
|
+
(0, chai_1.assert)(foundItemsUsingPost[0].id == createdForm.id, 'Found item using post should be the created one');
|
|
77
|
+
}));
|
|
78
|
+
it('Share with should work as expected', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
+
const api1 = yield initApi(env, test_utils_1.hcp1Username);
|
|
80
|
+
const user1 = yield api1.userApi.getCurrentUser();
|
|
81
|
+
const api2 = yield initApi(env, test_utils_1.hcp2Username);
|
|
82
|
+
const user2 = yield api2.userApi.getCurrentUser();
|
|
83
|
+
const samplePatient = yield api1.patientApi.createPatientWithUser(user1, yield api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' }));
|
|
84
|
+
const entity = yield api1.formApi.createForm(yield api1.formApi.newInstance(user1, samplePatient));
|
|
85
|
+
yield api2.formApi
|
|
86
|
+
.getForm(entity.id)
|
|
87
|
+
.then(() => {
|
|
88
|
+
throw new Error('Should not be able to get the entity');
|
|
89
|
+
})
|
|
90
|
+
.catch(() => {
|
|
91
|
+
/* expected */
|
|
92
|
+
});
|
|
93
|
+
yield api1.formApi.shareWith(user2.healthcarePartyId, entity);
|
|
94
|
+
const retrieved = yield api2.formApi.getForm(entity.id);
|
|
95
|
+
(0, chai_1.expect)((yield api2.formApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id);
|
|
96
|
+
}));
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=icc-form-x-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icc-form-x-api.js","sourceRoot":"","sources":["../../../test/icc-x-api/icc-form-x-api.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAAyB;AACzB,oDAAuH;AACvH,iCAA8B;AAC9B,+CAA6D;AAC7D,2CAA0C;AAC1C,yDAAqD;AAErD,mCAAmC;AACnC,mDAA+C;AAC/C,+BAAqC;AACrC,IAAO,OAAO,GAAG,sBAAS,CAAC,OAAO,CAAA;AAClC,mDAAmE;AACnE,wFAAyF;AAEzF,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;AACtB,IAAI,GAAa,CAAA;AAEjB,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,cAAM,EAAC;;YACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,sCAAyB,GAAE,CAAA;YACrD,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAA;QACpD,CAAC;KAAA,CAAC,CAAA;IAEF,SAAe,aAAa,CAAC,gBAAgC,EAAE,OAAa;;YAC1E,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,OAAO,EACP,MAAM,gBAAgB,CAAC,WAAW,CAChC,OAAO,EACP,IAAI,iBAAO,CAAC;gBACV,EAAE,EAAE,IAAA,mBAAU,GAAE;gBAChB,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CACH,CACF,CAAA;QACH,CAAC;KAAA;IAED,EAAE,CAAC,MAAM,EAAE,GAAS,EAAE;QACpB,QAAQ;QACR,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,yBAAY,CAAC,CAAC,IAAI,CAAA;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,yBAAY,CAAC,CAAC,QAAQ,CAAA;QAE5D,MAAM,YAAY,GAAG,IAAI,oDAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAExE,MAAM,OAAO,GAAG,IAAI,uBAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,IAAW,EAAE,KAAK,CAAC,CAAA;QACnF,MAAM,OAAO,GAAG,IAAI,oBAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;QAErE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IACpD,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,EAAE,GAAS,EAAE;QAC3B,QAAQ;QACR,MAAM,EACJ,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,kBAAkB,EAChC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,QAAQ,GAClB,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,yBAAY,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAA;QACpD,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAY,CAAA;QAE3E,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC;YACpB,EAAE,EAAE,IAAA,mBAAU,GAAE;YAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC7B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC9B,WAAW,EAAE,OAAO,CAAC,iBAAkB;YACvC,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,OAAO,CAAC,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC,EAAE;SACpB,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAW,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAW,CAAA;QACxG,MAAM,mBAAmB,GAAW,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAW,CAAA;QAEhH,IAAA,aAAM,EAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACzD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAA;QAElF,IAAA,aAAM,EAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAA;QAC7E,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,iDAAiD,CAAC,CAAA;IACxG,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAS,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,yBAAY,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,yBAAY,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QACjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAC/D,KAAK,EACL,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CACtF,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAA;QAClG,MAAM,IAAI,CAAC,OAAO;aACf,OAAO,CAAC,MAAM,CAAC,EAAG,CAAC;aACnB,IAAI,CAAC,GAAG,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,cAAc;QAChB,CAAC,CAAC,CAAA;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAkB,EAAE,MAAM,CAAC,CAAA;QAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAG,CAAC,CAAA;QACxD,IAAA,aAAM,EAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;IAC1F,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import 'isomorphic-fetch'\nimport { getEnvironmentInitializer, hcp1Username, hcp2Username, setLocalStorage, TestUtils } from '../utils/test_utils'\nimport { before } from 'mocha'\nimport { IccPatientXApi, IccUserXApi } from '../../icc-x-api'\nimport { IccFormApi } from '../../icc-api'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { User } from '../../icc-api/model/User'\nimport { randomUUID } from 'crypto'\nimport { Form } from '../../icc-api/model/Form'\nimport { assert, expect } from 'chai'\nimport initApi = TestUtils.initApi\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { BasicAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\n\nsetLocalStorage(fetch)\nlet env: TestVars\n\ndescribe('icc-calendar-item-x-api Tests', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n async function createPatient(patientApiForHcp: IccPatientXApi, hcpUser: User) {\n return patientApiForHcp.createPatientWithUser(\n hcpUser,\n await patientApiForHcp.newInstance(\n hcpUser,\n new Patient({\n id: randomUUID(),\n firstName: 'John',\n lastName: 'Snow',\n note: 'Winter is coming',\n })\n )\n )\n }\n\n it('Test', async () => {\n // Given\n const username = env.dataOwnerDetails[hcp1Username].user\n const password = env.dataOwnerDetails[hcp1Username].password\n\n const authProvider = new BasicAuthenticationProvider(username, password)\n\n const userApi = new IccUserXApi(env.iCureUrl, {}, authProvider, null as any, fetch)\n const formApi = new IccFormApi(env.iCureUrl, {}, authProvider, fetch)\n\n const currentUser = await userApi.getCurrentUser()\n })\n\n it('Test findBy', async () => {\n // Given\n const {\n userApi: userApiForHcp,\n dataOwnerApi: dataOwnerApiForHcp,\n patientApi: patientApiForHcp,\n cryptoApi: cryptoApiForHcp,\n dataOwnerApi: dateOwnerApiForHcp,\n formApi: formXApi,\n } = await initApi(env, hcp1Username)\n const hcpUser = await userApiForHcp.getCurrentUser()\n const patient = (await createPatient(patientApiForHcp, hcpUser)) as Patient\n\n const form = new Form({\n id: randomUUID(),\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: hcpUser.healthcarePartyId!,\n author: hcpUser.id,\n codes: [],\n tags: [],\n user: hcpUser.id,\n patient: patient.id,\n })\n const formToCreate = await formXApi.newInstance(hcpUser, patient, form)\n const createdForm = await formXApi.createForm(formToCreate)\n\n const foundItems: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, false)) as Form[]\n const foundItemsUsingPost: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, true)) as Form[]\n\n assert(foundItems.length == 1, 'Found items should be 1')\n assert(foundItems[0].id == createdForm.id, 'Found item should be the created one')\n\n assert(foundItemsUsingPost.length == 1, 'Found items using post should be 1')\n assert(foundItemsUsingPost[0].id == createdForm.id, 'Found item using post should be the created one')\n })\n\n it('Share with should work as expected', async () => {\n const api1 = await initApi(env!, hcp1Username)\n const user1 = await api1.userApi.getCurrentUser()\n const api2 = await initApi(env!, hcp2Username)\n const user2 = await api2.userApi.getCurrentUser()\n const samplePatient = await api1.patientApi.createPatientWithUser(\n user1,\n await api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' })\n )\n const entity = await api1.formApi.createForm(await api1.formApi.newInstance(user1, samplePatient))\n await api2.formApi\n .getForm(entity.id!)\n .then(() => {\n throw new Error('Should not be able to get the entity')\n })\n .catch(() => {\n /* expected */\n })\n await api1.formApi.shareWith(user2.healthcarePartyId!, entity)\n const retrieved = await api2.formApi.getForm(entity.id!)\n expect((await api2.formApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id)\n })\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'isomorphic-fetch';
|
|
@@ -0,0 +1,153 @@
|
|
|
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 mocha_1 = require("mocha");
|
|
13
|
+
require("isomorphic-fetch");
|
|
14
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
15
|
+
const Patient_1 = require("../../icc-api/model/Patient");
|
|
16
|
+
const chai_1 = require("chai");
|
|
17
|
+
const crypto_1 = require("crypto");
|
|
18
|
+
const test_utils_1 = require("../utils/test_utils");
|
|
19
|
+
const HealthElement_1 = require("../../icc-api/model/HealthElement");
|
|
20
|
+
const Code_1 = require("../../icc-api/model/Code");
|
|
21
|
+
const types_1 = require("@icure/test-setup/types");
|
|
22
|
+
const HealthElementByIdsFilter_1 = require("../../icc-x-api/filters/HealthElementByIdsFilter");
|
|
23
|
+
const FilterChainHealthElement_1 = require("../../icc-api/model/FilterChainHealthElement");
|
|
24
|
+
var initApi = test_utils_1.TestUtils.initApi;
|
|
25
|
+
(0, test_utils_1.setLocalStorage)(fetch);
|
|
26
|
+
let env;
|
|
27
|
+
function createPatient(patientApiForHcp, hcpUser) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return patientApiForHcp.createPatientWithUser(hcpUser, yield patientApiForHcp.newInstance(hcpUser, new Patient_1.Patient({
|
|
30
|
+
id: (0, crypto_1.randomUUID)(),
|
|
31
|
+
firstName: 'John',
|
|
32
|
+
lastName: 'Snow',
|
|
33
|
+
note: 'Winter is coming',
|
|
34
|
+
})));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function healthElementToCreate(hElementApiForHcp, hcpUser, patient) {
|
|
38
|
+
return hElementApiForHcp.newInstance(hcpUser, patient, new HealthElement_1.HealthElement({
|
|
39
|
+
id: (0, crypto_1.randomUUID)(),
|
|
40
|
+
codes: [new Code_1.Code({ system: 'LOINC', code: '95209', version: '3' })],
|
|
41
|
+
note: 'SARS-V2',
|
|
42
|
+
}), { confidential: true });
|
|
43
|
+
}
|
|
44
|
+
describe('icc-helement-x-api Tests', () => {
|
|
45
|
+
(0, mocha_1.before)(function () {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
this.timeout(600000);
|
|
48
|
+
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
49
|
+
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('CreateHealthElementWithUser Success for HCP', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
// Given
|
|
54
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, healthcareElementApi: hElementApiForHcp, cryptoApi: cryptoApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
55
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
56
|
+
const patient = yield createPatient(patientApiForHcp, hcpUser);
|
|
57
|
+
const hElementToCreate = yield healthElementToCreate(hElementApiForHcp, hcpUser, patient);
|
|
58
|
+
// When
|
|
59
|
+
const createdHealthElement = yield hElementApiForHcp.createHealthElementWithUser(hcpUser, hElementToCreate);
|
|
60
|
+
// Then
|
|
61
|
+
const readHealthElement = yield hElementApiForHcp.getHealthElementWithUser(hcpUser, createdHealthElement.id);
|
|
62
|
+
(0, chai_1.assert)(readHealthElement != null);
|
|
63
|
+
(0, chai_1.assert)(readHealthElement.id != null);
|
|
64
|
+
(0, chai_1.assert)(readHealthElement.note == hElementToCreate.note);
|
|
65
|
+
(0, chai_1.expect)(yield cryptoApiForHcp.xapi.encryptionKeysOf({ entity: readHealthElement, type: icc_x_api_1.EntityWithDelegationTypeName.HealthElement }, undefined)).to.have.length(1);
|
|
66
|
+
const decryptedPatientIds = yield hElementApiForHcp.decryptPatientIdOf(readHealthElement);
|
|
67
|
+
(0, chai_1.expect)(decryptedPatientIds).to.have.length(1);
|
|
68
|
+
(0, chai_1.expect)(decryptedPatientIds[0]).to.equal(patient.id);
|
|
69
|
+
}));
|
|
70
|
+
it('ModifyHealthElementWithUser Success for HCP', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
+
// Given
|
|
72
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, healthcareElementApi: hElementApiForHcp, cryptoApi: cryptoApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
73
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
74
|
+
yield initApi(env, test_utils_1.hcp1Username);
|
|
75
|
+
const patient = yield createPatient(patientApiForHcp, hcpUser);
|
|
76
|
+
const createdHealthElement = yield hElementApiForHcp.createHealthElementWithUser(hcpUser, yield healthElementToCreate(hElementApiForHcp, hcpUser, patient));
|
|
77
|
+
// When
|
|
78
|
+
const newNote = 'SARS-V2 (COVID-19)';
|
|
79
|
+
const modifiedHealthElement = yield hElementApiForHcp.modifyHealthElementWithUser(hcpUser, Object.assign(Object.assign({}, createdHealthElement), { note: newNote }));
|
|
80
|
+
// Then
|
|
81
|
+
const readHealthElement = yield hElementApiForHcp.getHealthElementWithUser(hcpUser, createdHealthElement.id);
|
|
82
|
+
(0, chai_1.assert)(readHealthElement != null);
|
|
83
|
+
(0, chai_1.assert)(readHealthElement.id != null);
|
|
84
|
+
(0, chai_1.assert)(readHealthElement.note != createdHealthElement.note);
|
|
85
|
+
(0, chai_1.assert)(readHealthElement.note == modifiedHealthElement.note);
|
|
86
|
+
(0, chai_1.assert)(readHealthElement.note == newNote);
|
|
87
|
+
(0, chai_1.expect)(yield cryptoApiForHcp.xapi.encryptionKeysOf({ entity: readHealthElement, type: icc_x_api_1.EntityWithDelegationTypeName.HealthElement }, undefined)).to.have.length(1);
|
|
88
|
+
const decryptedPatientIds = yield hElementApiForHcp.decryptPatientIdOf(readHealthElement);
|
|
89
|
+
(0, chai_1.expect)(decryptedPatientIds).to.have.length(1);
|
|
90
|
+
(0, chai_1.expect)(decryptedPatientIds[0]).to.equal(patient.id);
|
|
91
|
+
}));
|
|
92
|
+
it('findHealthElementsByHCPartyAndPatientWithUser Success for HCP', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
93
|
+
// Given
|
|
94
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, healthcareElementApi: hElementApiForHcp, cryptoApi: cryptoApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
95
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
96
|
+
const patient = (yield createPatient(patientApiForHcp, hcpUser));
|
|
97
|
+
const createdHealthElement = yield hElementApiForHcp.createHealthElementWithUser(hcpUser, yield healthElementToCreate(hElementApiForHcp, hcpUser, patient));
|
|
98
|
+
// When
|
|
99
|
+
const foundHealthElements = yield hElementApiForHcp.findHealthElementsByHCPartyAndPatientWithUser(hcpUser, hcpUser.healthcarePartyId, patient);
|
|
100
|
+
const foundHealthElementsUsingPost = yield hElementApiForHcp.findHealthElementsByHCPartyAndPatientWithUser(hcpUser, hcpUser.healthcarePartyId, patient, true);
|
|
101
|
+
// Then
|
|
102
|
+
(0, chai_1.assert)(foundHealthElements.length == 1, 'Found health elements should be 1');
|
|
103
|
+
(0, chai_1.assert)(foundHealthElements[0].id == createdHealthElement.id, 'Found health element should be the same as the created one');
|
|
104
|
+
(0, chai_1.assert)(foundHealthElementsUsingPost.length == 1, 'Found health elements using POST should be 1');
|
|
105
|
+
(0, chai_1.assert)(foundHealthElementsUsingPost[0].id == createdHealthElement.id, 'Found health element using POST should be the same as the created one');
|
|
106
|
+
}));
|
|
107
|
+
it('filter healthcare element result should return same output by id', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
var _a;
|
|
109
|
+
// Given
|
|
110
|
+
const { userApi: userApiForHcp, dataOwnerApi: dataOwnerApiForHcp, patientApi: patientApiForHcp, healthcareElementApi: hElementApiForHcp, cryptoApi: cryptoApiForHcp, } = yield initApi(env, test_utils_1.hcp1Username);
|
|
111
|
+
const hcpUser = yield userApiForHcp.getCurrentUser();
|
|
112
|
+
const patient = (yield createPatient(patientApiForHcp, hcpUser));
|
|
113
|
+
const createdHealthElement = yield hElementApiForHcp.createHealthElementWithUser(hcpUser, yield healthElementToCreate(hElementApiForHcp, hcpUser, patient));
|
|
114
|
+
// When
|
|
115
|
+
const healthElementById = yield hElementApiForHcp.getHealthElementWithUser(hcpUser, createdHealthElement.id);
|
|
116
|
+
const healthElementByFilter = yield hElementApiForHcp.filterByWithUser(hcpUser, undefined, undefined, new FilterChainHealthElement_1.FilterChainHealthElement({
|
|
117
|
+
filter: new HealthElementByIdsFilter_1.HealthElementByIdsFilter({
|
|
118
|
+
ids: [createdHealthElement.id],
|
|
119
|
+
healthcarePartyId: hcpUser.healthcarePartyId,
|
|
120
|
+
}),
|
|
121
|
+
}));
|
|
122
|
+
// Then
|
|
123
|
+
// expect(foundHealthElements).to.have.length(1)
|
|
124
|
+
// expect(foundHealthElements[0].id).to.equal(createdHealthElement.id)
|
|
125
|
+
(0, chai_1.assert)(((_a = healthElementByFilter.rows) === null || _a === void 0 ? void 0 : _a.length) == 1, 'Found health elements should be 1');
|
|
126
|
+
(0, chai_1.assert)(healthElementByFilter.rows[0].id == createdHealthElement.id, 'Found health element should be the same as the created one');
|
|
127
|
+
(0, chai_1.assert)(!!healthElementById.note, 'Health element should have a note');
|
|
128
|
+
(0, chai_1.assert)(JSON.stringify(healthElementByFilter.rows[0]) === JSON.stringify(healthElementById), 'Found health elements by id should match the one found by filter');
|
|
129
|
+
}));
|
|
130
|
+
it('Share with should work as expected', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const api1 = yield initApi(env, test_utils_1.hcp1Username);
|
|
132
|
+
const user1 = yield api1.userApi.getCurrentUser();
|
|
133
|
+
const api2 = yield initApi(env, test_utils_1.hcp2Username);
|
|
134
|
+
const user2 = yield api2.userApi.getCurrentUser();
|
|
135
|
+
const samplePatient = yield api1.patientApi.createPatientWithUser(user1, yield api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' }));
|
|
136
|
+
const encryptedField = 'Something encrypted';
|
|
137
|
+
const entity = yield api1.healthcareElementApi.createHealthElementWithUser(user1, yield api1.healthcareElementApi.newInstance(user1, samplePatient, { note: encryptedField }));
|
|
138
|
+
(0, chai_1.expect)(entity.note).to.be.equal(encryptedField);
|
|
139
|
+
yield api2.healthcareElementApi
|
|
140
|
+
.getHealthElementWithUser(user2, entity.id)
|
|
141
|
+
.then(() => {
|
|
142
|
+
throw new Error('Should not be able to get the entity');
|
|
143
|
+
})
|
|
144
|
+
.catch(() => {
|
|
145
|
+
/* expected */
|
|
146
|
+
});
|
|
147
|
+
yield api1.healthcareElementApi.shareWith(user2.healthcarePartyId, entity);
|
|
148
|
+
const retrieved = yield api2.healthcareElementApi.getHealthElementWithUser(user2, entity.id);
|
|
149
|
+
(0, chai_1.expect)(retrieved.note).to.be.equal(encryptedField);
|
|
150
|
+
(0, chai_1.expect)((yield api2.healthcareElementApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id);
|
|
151
|
+
}));
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=icc-helement-x-api-test.js.map
|