gdc-sdk-node-ts 0.12.0 → 2.0.4
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/README.md +118 -12
- package/dist/backend-profile-runtime.d.ts +262 -0
- package/dist/backend-profile-runtime.js +498 -0
- package/dist/consent-claim-helpers.d.ts +2 -1
- package/dist/family-organization-registration.d.ts +40 -0
- package/dist/family-organization-registration.js +54 -0
- package/dist/family-organization-search.d.ts +30 -0
- package/dist/family-organization-search.js +59 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/individual-controller-backend-runtime.d.ts +59 -0
- package/dist/individual-controller-backend-runtime.js +67 -0
- package/dist/legal-organization-onboarding-facade.d.ts +70 -0
- package/dist/legal-organization-onboarding-facade.js +169 -0
- package/dist/node-runtime-client.d.ts +98 -2
- package/dist/node-runtime-client.js +178 -6
- package/dist/orchestration/client-port.d.ts +31 -1
- package/dist/orchestration/individual-controller-sdk.d.ts +23 -1
- package/dist/orchestration/individual-controller-sdk.js +28 -0
- package/dist/orchestration/organization-controller-sdk.d.ts +22 -1
- package/dist/orchestration/organization-controller-sdk.js +25 -0
- package/dist/orchestration/personal-sdk.d.ts +3 -1
- package/dist/orchestration/personal-sdk.js +4 -0
- package/dist/orchestration/professional-sdk.d.ts +16 -1
- package/dist/orchestration/professional-sdk.js +21 -0
- package/dist/organization-controller-backend-runtime.d.ts +65 -0
- package/dist/organization-controller-backend-runtime.js +83 -0
- package/dist/professional-backend-runtime.d.ts +36 -0
- package/dist/professional-backend-runtime.js +41 -0
- package/dist/profile-workspace.d.ts +82 -0
- package/dist/profile-workspace.js +127 -0
- package/dist/resource-operations.d.ts +79 -5
- package/dist/resource-operations.js +50 -5
- package/package.json +8 -3
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
// Always create JSDoc, do not use strings inline in keys nor values, use types instead, and reuse the data test examples.
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
5
|
+
import { DIDCOMM_DEFAULT_ACCEPT_HEADER, DIDCOMM_PLAINTEXT_JSON_MEDIA_TYPE, } from 'gdc-common-utils-ts/utils/didcomm-submit';
|
|
6
|
+
import { buildLegalOrganizationVerificationGatewayRequestBundle, buildOrganizationDidBindingBundle, buildAppHeaders, createBootstrapFacade, resolveAppInfo, } from 'gdc-sdk-core-ts';
|
|
6
7
|
import { buildConsentClaimsSimpleWithCid } from 'gdc-common-utils-ts/utils/consent';
|
|
8
|
+
import { buildDidcommPlaintextTransportMetadata } from 'gdc-common-utils-ts/utils/activation-request';
|
|
7
9
|
import { pollUntilCompleteWithMethod } from './async-polling.js';
|
|
8
10
|
import { confirmLegalOrganizationOrderWithDeps, HostLifecycleRequestType, HostedTenantLifecycleRequestType, submitHostedTenantLifecycleWithDeps, } from './host-onboarding.js';
|
|
9
11
|
import { confirmIndividualOrganizationOrderWithDeps, } from './individual-onboarding.js';
|
|
12
|
+
import { ensureFamilyOrganizationRegistrationWithDeps, } from './family-organization-registration.js';
|
|
13
|
+
import { searchFamilyOrganizationWithDeps } from './family-organization-search.js';
|
|
10
14
|
import { requestSmartTokenWithDeps } from './smart-token.js';
|
|
11
15
|
import { extractOfferIdFromResponseBody, extractOfferPreviewFromResponseBody, } from './order-offer-summary.js';
|
|
12
16
|
import { confirmOrganizationLicenseOrderWithDeps } from './organization-license-order.js';
|
|
13
17
|
import { startIndividualOrganizationWithDeps } from './individual-start.js';
|
|
14
|
-
import { createOrganizationEmployeeWithDeps, disableIndividualMemberWithDeps, disableIndividualOrganizationWithDeps, disableOrganizationEmployeeWithDeps, listIndividualLicenseOffersWithDeps, listIndividualLicenseOrdersWithDeps, listIndividualLicensesWithDeps, listOrganizationLicenseOffersWithDeps, listOrganizationLicenseOrdersWithDeps, listOrganizationLicensesWithDeps, grantProfessionalAccessWithDeps, ingestCommunicationAndUpdateIndexWithDeps, purgeIndividualMemberWithDeps, purgeIndividualOrganizationWithDeps, purgeOrganizationEmployeeWithDeps, searchIndividualLicensesWithDeps, searchIndividualLicenseOffersWithDeps, searchIndividualLicenseOrdersWithDeps, searchOrganizationLicensesWithDeps, searchOrganizationLicenseOffersWithDeps, searchOrganizationLicenseOrdersWithDeps, searchOrganizationEmployeesWithDeps, searchClinicalBundleWithDeps, searchLatestIpsWithDeps, upsertRelatedPersonAndPollWithDeps, } from './resource-operations.js';
|
|
18
|
+
import { createOrganizationEmployeeWithDeps, disableIndividualMemberWithDeps, disableIndividualOrganizationWithDeps, disableOrganizationEmployeeWithDeps, listIndividualLicenseOffersWithDeps, listIndividualLicenseOrdersWithDeps, listIndividualLicensesWithDeps, listOrganizationLicenseOffersWithDeps, listOrganizationLicenseOrdersWithDeps, listOrganizationLicensesWithDeps, grantProfessionalAccessWithDeps, ingestCommunicationAndUpdateIndexWithDeps, revokeProfessionalAccessWithDeps, searchCommunicationParticipantsWithDeps, purgeIndividualMemberWithDeps, purgeIndividualOrganizationWithDeps, purgeOrganizationEmployeeWithDeps, searchIndividualLicensesWithDeps, searchIndividualLicenseOffersWithDeps, searchIndividualLicenseOrdersWithDeps, searchOrganizationLicensesWithDeps, searchOrganizationLicenseOffersWithDeps, searchOrganizationLicenseOrdersWithDeps, searchOrganizationEmployeesWithDeps, searchClinicalBundleWithDeps, searchLatestIpsWithDeps, upsertRelatedPersonAndPollWithDeps, } from './resource-operations.js';
|
|
15
19
|
import { submitAndPollWithMethods } from './orchestration/client-port.js';
|
|
16
20
|
import { GwCoreLifecycleAction } from './constants/lifecycle.js';
|
|
17
21
|
const bootstrapFacade = createBootstrapFacade();
|
|
@@ -82,7 +86,7 @@ export class HttpRuntimeClient {
|
|
|
82
86
|
* Submits a batch payload to a gateway batch endpoint.
|
|
83
87
|
*/
|
|
84
88
|
async submitBatch(path, payload) {
|
|
85
|
-
return this.postJson(path, payload,
|
|
89
|
+
return this.postJson(path, payload, DIDCOMM_PLAINTEXT_JSON_MEDIA_TYPE);
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
88
92
|
* Polls a batch-response endpoint until the GW reports a terminal state.
|
|
@@ -96,9 +100,67 @@ export class HttpRuntimeClient {
|
|
|
96
100
|
async submitAndPoll(submitPath, pollPath, payload, pollOptions) {
|
|
97
101
|
return submitAndPollWithMethods(this, submitPath, pollPath, payload, pollOptions);
|
|
98
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Starts the host-side legal-organization verification transaction that GW
|
|
105
|
+
* CORE forwards to ICA `_verify`.
|
|
106
|
+
*
|
|
107
|
+
* Runtime ownership:
|
|
108
|
+
* - builds the canonical shared business bundle from `sdk-core/common-utils`
|
|
109
|
+
* - keeps communication/runtime transport concerns at the outer message layer
|
|
110
|
+
* - keeps the controller business key inside the submitted bundle payload
|
|
111
|
+
*
|
|
112
|
+
* Flow separation:
|
|
113
|
+
* - `_transaction` is the new host onboarding step
|
|
114
|
+
* - this runtime does not chain `_activate` after `_transaction`
|
|
115
|
+
* - `_activate` remains available only for the older ICA `_verify` based flow
|
|
116
|
+
*/
|
|
117
|
+
async submitLegalOrganizationVerificationTransaction(hostCtx, input, pollOptions) {
|
|
118
|
+
const thid = `organization-verification-transaction-${runtimeUuid()}`;
|
|
119
|
+
const jti = `organization-verification-transaction-jti-${runtimeUuid()}`;
|
|
120
|
+
const verificationBundle = buildLegalOrganizationVerificationGatewayRequestBundle(input);
|
|
121
|
+
const payload = this.wrapBundleAsGatewayTransactionMessage({
|
|
122
|
+
thid,
|
|
123
|
+
jti,
|
|
124
|
+
hostCtx,
|
|
125
|
+
bundle: verificationBundle,
|
|
126
|
+
});
|
|
127
|
+
return this.submitAndPoll(this.hostRegistryOrganizationTransactionPath(hostCtx), this.hostRegistryOrganizationTransactionPollPath(hostCtx), payload, pollOptions);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Submits one tenant-scoped DID document binding request.
|
|
131
|
+
*
|
|
132
|
+
* Binding semantics:
|
|
133
|
+
* - the tenant path identifies the existing organization
|
|
134
|
+
* - `organization.url` carries the public alias/domain list
|
|
135
|
+
* - `controller.sameAs` is optional corroborating identity material
|
|
136
|
+
* - the flow does not rotate or replace organization public keys
|
|
137
|
+
*/
|
|
138
|
+
async submitOrganizationDidBinding(ctx, input, pollOptions) {
|
|
139
|
+
const thid = `organization-did-binding-${runtimeUuid()}`;
|
|
140
|
+
const jti = `organization-did-binding-jti-${runtimeUuid()}`;
|
|
141
|
+
const payload = {
|
|
142
|
+
jti,
|
|
143
|
+
thid,
|
|
144
|
+
type: 'application/api+json',
|
|
145
|
+
body: buildOrganizationDidBindingBundle(input),
|
|
146
|
+
};
|
|
147
|
+
return this.submitAndPoll(this.organizationDidBindingPath(ctx), this.organizationDidBindingPollPath(ctx), payload, pollOptions);
|
|
148
|
+
}
|
|
99
149
|
/**
|
|
100
150
|
* Activates a legal organization in the gateway host registry using an ICA
|
|
101
151
|
* proof token already obtained by the caller.
|
|
152
|
+
*
|
|
153
|
+
* Plaintext transport note:
|
|
154
|
+
* - this Node runtime currently submits `_activate` as
|
|
155
|
+
* `application/didcomm-plaintext+json`
|
|
156
|
+
* - because there is no real outer JWS/JWE envelope in that mode, the
|
|
157
|
+
* runtime mirrors the technical communication metadata derived from
|
|
158
|
+
* `controller.publicKeyJwk` / `controller.jwks` into `meta.jws.protected`
|
|
159
|
+
* and `meta.jwe.header`
|
|
160
|
+
* - secure JOSE transports should carry those values in the real protected
|
|
161
|
+
* headers instead of plaintext `meta`
|
|
162
|
+
* - this mirrored metadata is transport fallback only; the canonical
|
|
163
|
+
* activation contract remains `body.vp_token` plus `body.controller.*`
|
|
102
164
|
*/
|
|
103
165
|
async activateOrganizationInGatewayFromIcaProof(hostCtx, input, pollOptions) {
|
|
104
166
|
const thid = `activate-org-${runtimeUuid()}`;
|
|
@@ -109,11 +171,16 @@ export class HttpRuntimeClient {
|
|
|
109
171
|
additionalClaims: input.additionalClaims,
|
|
110
172
|
});
|
|
111
173
|
const serviceClaims = activationDraft.buildServiceClaims();
|
|
174
|
+
const transportMeta = buildDidcommPlaintextTransportMetadata({
|
|
175
|
+
controller: input.controller,
|
|
176
|
+
contentType: 'application/didcomm-plaintext+json',
|
|
177
|
+
});
|
|
112
178
|
const payload = {
|
|
113
179
|
thid,
|
|
114
180
|
iss: String(hostCtx.controllerDid || '').trim() || undefined,
|
|
115
181
|
aud: String(hostCtx.hostDid || '').trim() || undefined,
|
|
116
182
|
type: 'application/api+json',
|
|
183
|
+
...(transportMeta ? { meta: transportMeta } : {}),
|
|
117
184
|
body: {
|
|
118
185
|
vp_token: input.vpToken,
|
|
119
186
|
...(input.controller ? { controller: input.controller } : {}),
|
|
@@ -365,6 +432,38 @@ export class HttpRuntimeClient {
|
|
|
365
432
|
getOfferPreviewFromResponse: (result) => extractOfferPreviewFromResponseBody(result.poll.body),
|
|
366
433
|
});
|
|
367
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* Searches one existing family/individual registration by controller phone +
|
|
437
|
+
* usualname, with optional birth-date disambiguation.
|
|
438
|
+
*/
|
|
439
|
+
async searchFamilyOrganization(ctx, input) {
|
|
440
|
+
return searchFamilyOrganizationWithDeps({
|
|
441
|
+
routeCtx: ctx,
|
|
442
|
+
input,
|
|
443
|
+
defaultTimeoutMs: 20000,
|
|
444
|
+
defaultIntervalMs: 1000,
|
|
445
|
+
individualFamilyOrganizationSearchPath: this.individualFamilyOrganizationSearchPath.bind(this),
|
|
446
|
+
individualFamilyOrganizationSearchPollPath: this.individualFamilyOrganizationSearchPollPath.bind(this),
|
|
447
|
+
submitAndPoll: this.submitAndPoll.bind(this),
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Searches one existing family/individual registration and starts the
|
|
452
|
+
* bootstrap flow only when the registration does not already exist.
|
|
453
|
+
*/
|
|
454
|
+
async ensureFamilyOrganizationRegistration(ctx, input) {
|
|
455
|
+
return ensureFamilyOrganizationRegistrationWithDeps({
|
|
456
|
+
routeCtx: ctx,
|
|
457
|
+
input,
|
|
458
|
+
defaultTimeoutMs: 20000,
|
|
459
|
+
defaultIntervalMs: 1000,
|
|
460
|
+
individualFamilyOrganizationSearchPath: this.individualFamilyOrganizationSearchPath.bind(this),
|
|
461
|
+
individualFamilyOrganizationSearchPollPath: this.individualFamilyOrganizationSearchPollPath.bind(this),
|
|
462
|
+
individualFamilyOrganizationBatchPath: this.individualFamilyOrganizationTransactionPath.bind(this),
|
|
463
|
+
individualFamilyOrganizationPollPath: this.individualFamilyOrganizationTransactionPollPath.bind(this),
|
|
464
|
+
submitAndPoll: this.submitAndPoll.bind(this),
|
|
465
|
+
});
|
|
466
|
+
}
|
|
368
467
|
/**
|
|
369
468
|
* Confirms the order returned by `startIndividualOrganization(...)`.
|
|
370
469
|
*/
|
|
@@ -501,6 +600,17 @@ export class HttpRuntimeClient {
|
|
|
501
600
|
submitAndPoll: this.submitAndPoll.bind(this),
|
|
502
601
|
});
|
|
503
602
|
}
|
|
603
|
+
/**
|
|
604
|
+
* Closes an existing professional consent by setting its period end and
|
|
605
|
+
* resubmitting the updated consent resource.
|
|
606
|
+
*/
|
|
607
|
+
async revokeProfessionalAccess(ctx, input) {
|
|
608
|
+
return revokeProfessionalAccessWithDeps(ctx, input, {
|
|
609
|
+
individualConsentR4BatchPath: this.individualConsentR4BatchPath.bind(this),
|
|
610
|
+
individualConsentR4PollPath: this.individualConsentR4PollPath.bind(this),
|
|
611
|
+
submitAndPoll: this.submitAndPoll.bind(this),
|
|
612
|
+
});
|
|
613
|
+
}
|
|
504
614
|
/**
|
|
505
615
|
* Requests SMART/OpenID token material through the gateway.
|
|
506
616
|
*
|
|
@@ -550,6 +660,17 @@ export class HttpRuntimeClient {
|
|
|
550
660
|
submitAndPoll: this.submitAndPoll.bind(this),
|
|
551
661
|
});
|
|
552
662
|
}
|
|
663
|
+
/**
|
|
664
|
+
* Searches communication channel records by subject and participant
|
|
665
|
+
* identifiers through `Communication/_search`.
|
|
666
|
+
*/
|
|
667
|
+
async searchCommunicationParticipants(ctx, input) {
|
|
668
|
+
return searchCommunicationParticipantsWithDeps(ctx, input, {
|
|
669
|
+
communicationSearchPath: this.individualCommunicationSearchPath.bind(this),
|
|
670
|
+
communicationSearchPollPath: this.individualCommunicationSearchPollPath.bind(this),
|
|
671
|
+
submitAndPoll: this.submitAndPoll.bind(this),
|
|
672
|
+
});
|
|
673
|
+
}
|
|
553
674
|
/**
|
|
554
675
|
* Alias for `ingestCommunicationAndUpdateIndex(...)`.
|
|
555
676
|
*
|
|
@@ -648,7 +769,7 @@ export class HttpRuntimeClient {
|
|
|
648
769
|
const headers = {
|
|
649
770
|
...this.defaultHeaders,
|
|
650
771
|
'Content-Type': contentType,
|
|
651
|
-
Accept:
|
|
772
|
+
Accept: DIDCOMM_DEFAULT_ACCEPT_HEADER,
|
|
652
773
|
};
|
|
653
774
|
if (this.bearerToken)
|
|
654
775
|
headers.Authorization = `Bearer ${this.bearerToken}`;
|
|
@@ -723,18 +844,57 @@ export class HttpRuntimeClient {
|
|
|
723
844
|
? { tenantId, jurisdiction: input.jurisdiction, sector: input.sector }
|
|
724
845
|
: undefined);
|
|
725
846
|
}
|
|
847
|
+
/**
|
|
848
|
+
* Reuses the shared bundle business contract while keeping attachment
|
|
849
|
+
* transport fields at the DIDComm/plaintext message layer expected by GW.
|
|
850
|
+
*/
|
|
851
|
+
wrapBundleAsGatewayTransactionMessage(input) {
|
|
852
|
+
const rawBundle = (input.bundle || {});
|
|
853
|
+
const attachments = Array.isArray(rawBundle.attachments) ? rawBundle.attachments : undefined;
|
|
854
|
+
const { attachments: _ignoredAttachments, ...body } = rawBundle;
|
|
855
|
+
return {
|
|
856
|
+
jti: input.jti,
|
|
857
|
+
thid: input.thid,
|
|
858
|
+
iss: String(input.hostCtx.controllerDid || '').trim() || undefined,
|
|
859
|
+
aud: String(input.hostCtx.hostDid || '').trim() || undefined,
|
|
860
|
+
type: 'application/api+json',
|
|
861
|
+
body,
|
|
862
|
+
...(attachments && attachments.length > 0 ? { attachments } : {}),
|
|
863
|
+
};
|
|
864
|
+
}
|
|
726
865
|
hostRegistryPath(ctx, resourceType, action) {
|
|
727
866
|
const hostCtx = this.requireHostRouteContext(ctx);
|
|
728
867
|
return `/host/cds-${encodeURIComponent(hostCtx.jurisdiction)}/v1/${encodeURIComponent(hostCtx.hostNetwork || '')}/registry/org.schema/${encodeURIComponent(resourceType)}/${encodeURIComponent(action)}`;
|
|
729
868
|
}
|
|
869
|
+
/**
|
|
870
|
+
* Resolves the host route segment without forcing callers to remember whether
|
|
871
|
+
* the same raw string is named `hostNetwork` or `sector` in a given layer.
|
|
872
|
+
*
|
|
873
|
+
* Step by step:
|
|
874
|
+
* - host routes use `/host/cds-{jurisdiction}/v1/{host-network}`
|
|
875
|
+
* - tenant routes use `/{tenantId}/cds-{jurisdiction}/v1/{tenant-sector}`
|
|
876
|
+
* - older live tests and adapters sometimes passed the host segment under
|
|
877
|
+
* `sector`, which is semantically wrong for host routes
|
|
878
|
+
* - new code should prefer `hostNetwork`
|
|
879
|
+
* - compatibility code may pass `hostNetworkOrTenantSector`
|
|
880
|
+
*/
|
|
730
881
|
requireHostRouteContext(ctx) {
|
|
882
|
+
const hostCtx = (ctx || {});
|
|
731
883
|
const runtimeCtx = (this.ctx || {});
|
|
732
|
-
const jurisdiction = String(
|
|
733
|
-
const hostNetwork = String(
|
|
884
|
+
const jurisdiction = String(hostCtx.jurisdiction || this.ctx?.jurisdiction || '').trim();
|
|
885
|
+
const hostNetwork = String(hostCtx.hostNetwork
|
|
886
|
+
|| hostCtx.hostNetworkOrTenantSector
|
|
887
|
+
|| hostCtx.sector
|
|
888
|
+
|| runtimeCtx.hostNetwork
|
|
889
|
+
|| runtimeCtx.hostNetworkOrTenantSector
|
|
890
|
+
|| runtimeCtx.sector
|
|
891
|
+
|| '').trim();
|
|
734
892
|
if (!jurisdiction || !hostNetwork)
|
|
735
893
|
throw new Error('Host route context is required.');
|
|
736
894
|
return { jurisdiction, hostNetwork };
|
|
737
895
|
}
|
|
896
|
+
hostRegistryOrganizationTransactionPath(ctx) { return this.hostRegistryPath(ctx, 'Organization', GwCoreLifecycleAction.Transaction); }
|
|
897
|
+
hostRegistryOrganizationTransactionPollPath(ctx) { return this.hostRegistryPath(ctx, 'Organization', GwCoreLifecycleAction.TransactionResponse); }
|
|
738
898
|
hostRegistryOrganizationActivatePath(ctx) { return this.hostRegistryPath(ctx, 'Organization', '_activate'); }
|
|
739
899
|
hostRegistryOrganizationActivatePollPath(ctx) { return this.hostRegistryPath(ctx, 'Organization', '_activate-response'); }
|
|
740
900
|
hostRegistryOrganizationDisablePath(ctx) { return this.hostRegistryPath(ctx, 'Organization', GwCoreLifecycleAction.Disable); }
|
|
@@ -749,6 +909,14 @@ export class HttpRuntimeClient {
|
|
|
749
909
|
employeeSearchPollPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'Employee', '_search-response'); }
|
|
750
910
|
organizationLicenseSearchPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'License', '_search'); }
|
|
751
911
|
organizationLicenseSearchPollPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'License', '_search-response'); }
|
|
912
|
+
organizationDidBindingPath(ctx) {
|
|
913
|
+
const resolved = this.requireRouteContext(ctx);
|
|
914
|
+
return `/${encodeURIComponent(resolved.tenantId)}/cds-${encodeURIComponent(resolved.jurisdiction)}/v1/${encodeURIComponent(resolved.sector)}/did/document/_binding`;
|
|
915
|
+
}
|
|
916
|
+
organizationDidBindingPollPath(ctx) {
|
|
917
|
+
const resolved = this.requireRouteContext(ctx);
|
|
918
|
+
return `/${encodeURIComponent(resolved.tenantId)}/cds-${encodeURIComponent(resolved.jurisdiction)}/v1/${encodeURIComponent(resolved.sector)}/did/document/_binding-response`;
|
|
919
|
+
}
|
|
752
920
|
organizationLicenseOfferSearchPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'Offer', '_search'); }
|
|
753
921
|
organizationLicenseOfferSearchPollPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'Offer', '_search-response'); }
|
|
754
922
|
organizationLicenseOrderSearchPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'Order', '_search'); }
|
|
@@ -757,6 +925,8 @@ export class HttpRuntimeClient {
|
|
|
757
925
|
employeePurgePollPath(ctx) { return this.v1Path(ctx, 'entity', 'org.schema', 'Employee', `${GwCoreLifecycleAction.Purge}-response`); }
|
|
758
926
|
individualFamilyOrganizationBatchPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', GwCoreLifecycleAction.Batch); }
|
|
759
927
|
individualFamilyOrganizationPollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', GwCoreLifecycleAction.BatchResponse); }
|
|
928
|
+
individualFamilyOrganizationSearchPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', '_search'); }
|
|
929
|
+
individualFamilyOrganizationSearchPollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', '_search-response'); }
|
|
760
930
|
individualFamilyOrganizationTransactionPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', GwCoreLifecycleAction.Transaction); }
|
|
761
931
|
individualFamilyOrganizationTransactionPollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', GwCoreLifecycleAction.TransactionResponse); }
|
|
762
932
|
individualFamilyOrganizationDisablePath(ctx) { return this.v1Path(ctx, 'individual', 'org.schema', 'Organization', GwCoreLifecycleAction.Disable); }
|
|
@@ -779,6 +949,8 @@ export class HttpRuntimeClient {
|
|
|
779
949
|
individualConsentR4PollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.hl7.fhir.r4', 'Consent', '_batch-response'); }
|
|
780
950
|
individualCommunicationBatchPath(ctx, format) { return this.v1Path(ctx, 'individual', format, 'Communication', '_batch'); }
|
|
781
951
|
individualCommunicationPollPath(ctx, format) { return this.v1Path(ctx, 'individual', format, 'Communication', '_batch-response'); }
|
|
952
|
+
individualCommunicationSearchPath(ctx) { return this.v1Path(ctx, 'individual', 'org.hl7.fhir.r4', 'Communication', '_search'); }
|
|
953
|
+
individualCommunicationSearchPollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.hl7.fhir.r4', 'Communication', '_search-response'); }
|
|
782
954
|
individualBundleSearchPath(ctx) { return this.v1Path(ctx, 'individual', 'org.hl7.fhir.r4', 'Bundle', '_search'); }
|
|
783
955
|
individualBundleSearchPollPath(ctx) { return this.v1Path(ctx, 'individual', 'org.hl7.fhir.r4', 'Bundle', '_search-response'); }
|
|
784
956
|
identityTokenExchangePath(ctx) {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { ControllerBindingInput } from 'gdc-common-utils-ts/models';
|
|
2
|
+
import type { FamilyOrganizationSummary } from 'gdc-common-utils-ts/utils/family-organization-summary';
|
|
3
|
+
import type { LegalOrganizationVerificationTransactionInput } from 'gdc-common-utils-ts/utils/legal-organization-verification-transaction';
|
|
4
|
+
import type { OrganizationDidBindingInput } from 'gdc-sdk-core-ts';
|
|
2
5
|
import type { LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js';
|
|
3
6
|
import type { AsyncPollRequest, OrganizationActivationServiceOptions, PollOptions, PollResult, SubmitAndPollResult, SubmitPayload, SubmitResponse } from 'gdc-sdk-core-ts';
|
|
4
7
|
export type { AsyncPollRequest, PollOptions, PollResult, SubmitAndPollResult, SubmitPayload, SubmitResponse, } from 'gdc-sdk-core-ts';
|
|
@@ -6,9 +9,11 @@ import type { EmployeeDeviceActivationResult, EmployeeDeviceActivationRequestInp
|
|
|
6
9
|
import type { HostRouteContext, HostedTenantLifecycleInput, LegalOrganizationOrderInput } from '../host-onboarding.js';
|
|
7
10
|
import type { IndividualOrganizationConfirmOrderInput, RouteContext } from '../individual-onboarding.js';
|
|
8
11
|
import type { IndividualOrganizationBootstrapInput, IndividualOrganizationStartResult } from '../individual-start.js';
|
|
12
|
+
import type { FamilyOrganizationSearchInput } from '../family-organization-search.js';
|
|
13
|
+
import type { EnsureFamilyOrganizationRegistrationInput, EnsureFamilyOrganizationRegistrationResult } from '../family-organization-registration.js';
|
|
9
14
|
import type { OrganizationLicenseOrderConfirmInput } from '../organization-license-order.js';
|
|
10
15
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
11
|
-
import type { CommunicationIngestionInput, ClinicalBundleSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualOrganizationLifecycleInput, IpsOrFhirImportInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput, RelatedPersonUpsertInput } from '../resource-operations.js';
|
|
16
|
+
import type { CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualOrganizationLifecycleInput, IpsOrFhirImportInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
|
|
12
17
|
/**
|
|
13
18
|
* Shared node-runtime activation input.
|
|
14
19
|
*
|
|
@@ -21,6 +26,25 @@ export type NodeOrganizationActivationInput = {
|
|
|
21
26
|
service?: OrganizationActivationServiceOptions;
|
|
22
27
|
additionalClaims?: Record<string, unknown>;
|
|
23
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Shared node-runtime input for the first host-side legal-organization
|
|
31
|
+
* verification step.
|
|
32
|
+
*
|
|
33
|
+
* The business payload is owned by shared SDK/common packages:
|
|
34
|
+
* - transport/runtime communication keys stay outside this contract
|
|
35
|
+
* - controller business key binding remains in `controller.*`
|
|
36
|
+
* - GW CORE host routing/polling stays in the runtime adapter
|
|
37
|
+
*/
|
|
38
|
+
export type NodeLegalOrganizationVerificationTransactionInput = LegalOrganizationVerificationTransactionInput;
|
|
39
|
+
/**
|
|
40
|
+
* Shared node-runtime input for the organization DID binding operation.
|
|
41
|
+
*
|
|
42
|
+
* Binding contract:
|
|
43
|
+
* - tenant identity is resolved from the route path
|
|
44
|
+
* - `organization.url` carries one or more public aliases/domains
|
|
45
|
+
* - `controller.sameAs` is optional corroborating identity evidence
|
|
46
|
+
*/
|
|
47
|
+
export type NodeOrganizationDidBindingInput = OrganizationDidBindingInput;
|
|
24
48
|
/**
|
|
25
49
|
* Runtime-neutral actor/application client contract as exposed by the Node SDK.
|
|
26
50
|
*
|
|
@@ -29,6 +53,8 @@ export type NodeOrganizationActivationInput = {
|
|
|
29
53
|
* converge across runtimes.
|
|
30
54
|
*/
|
|
31
55
|
export type RuntimeClient = {
|
|
56
|
+
submitLegalOrganizationVerificationTransaction?: (hostCtx: HostRouteContext, input: NodeLegalOrganizationVerificationTransactionInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
57
|
+
submitOrganizationDidBinding?: (ctx: RouteContext, input: NodeOrganizationDidBindingInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
32
58
|
activateOrganizationInGatewayFromIcaProof?: (hostCtx: HostRouteContext, input: NodeOrganizationActivationInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
33
59
|
confirmLegalOrganizationOrder?: (hostCtx: HostRouteContext, input: LegalOrganizationOrderInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
34
60
|
disableHost?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
@@ -51,6 +77,8 @@ export type RuntimeClient = {
|
|
|
51
77
|
activateEmployeeDeviceWithActivationRequest?: (input: EmployeeDeviceActivationRequestInput) => Promise<EmployeeDeviceActivationResult>;
|
|
52
78
|
requestSmartToken?: (input: SmartTokenRequestInput) => Promise<SmartTokenExchangeResult>;
|
|
53
79
|
startIndividualOrganization?: (input: IndividualOrganizationBootstrapInput) => Promise<IndividualOrganizationStartResult>;
|
|
80
|
+
searchFamilyOrganization?: (ctx: RouteContext, input: FamilyOrganizationSearchInput) => Promise<FamilyOrganizationSummary | null>;
|
|
81
|
+
ensureFamilyOrganizationRegistration?: (ctx: RouteContext, input: EnsureFamilyOrganizationRegistrationInput) => Promise<EnsureFamilyOrganizationRegistrationResult>;
|
|
54
82
|
confirmIndividualOrganizationOrder?: (input: IndividualOrganizationConfirmOrderInput) => Promise<SubmitAndPollResult>;
|
|
55
83
|
disableIndividual?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
56
84
|
purgeIndividual?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
@@ -59,7 +87,9 @@ export type RuntimeClient = {
|
|
|
59
87
|
disableIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
60
88
|
purgeIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
61
89
|
ingestCommunicationAndUpdateIndex?: (ctx: RouteContext, input: CommunicationIngestionInput) => Promise<SubmitAndPollResult>;
|
|
90
|
+
searchCommunicationParticipants?: (ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput) => Promise<SubmitAndPollResult>;
|
|
62
91
|
grantProfessionalAccess?: (ctx: RouteContext, input: GrantProfessionalAccessInput) => Promise<GrantProfessionalAccessResult>;
|
|
92
|
+
revokeProfessionalAccess?: (ctx: RouteContext, input: RevokeProfessionalAccessInput) => Promise<RevokeProfessionalAccessResult>;
|
|
63
93
|
searchIndividualLicenses?: (ctx: RouteContext, input: LicenseListRuntimeSearchInput) => Promise<SubmitAndPollResult>;
|
|
64
94
|
listIndividualLicenses?: (ctx: RouteContext, input?: LicenseListRuntimeSearchInput) => Promise<SubmitAndPollResult>;
|
|
65
95
|
searchIndividualLicenseOffers?: (ctx: RouteContext, input: LicenseOfferRuntimeSearchInput) => Promise<SubmitAndPollResult>;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
|
+
import type { FamilyOrganizationSummary } from 'gdc-common-utils-ts/utils/family-organization-summary';
|
|
3
|
+
import type { EnsureFamilyOrganizationRegistrationInput, EnsureFamilyOrganizationRegistrationResult } from '../family-organization-registration.js';
|
|
4
|
+
import type { FamilyOrganizationSearchInput } from '../family-organization-search.js';
|
|
2
5
|
import type { IndividualOrganizationConfirmOrderInput, RouteContext } from '../individual-onboarding.js';
|
|
3
6
|
import type { IndividualOrganizationBootstrapInput, IndividualOrganizationStartResult } from '../individual-start.js';
|
|
4
7
|
import type { NodeCapability } from '../session.js';
|
|
5
|
-
import type { ClinicalBundleSearchInput, CommunicationIngestionInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualOrganizationLifecycleInput, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput, RelatedPersonUpsertInput } from '../resource-operations.js';
|
|
8
|
+
import type { ClinicalBundleSearchInput, CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualOrganizationLifecycleInput, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
|
|
6
9
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
7
10
|
/**
|
|
8
11
|
* Individual-controller oriented facade over a `NodeRuntimeClient`.
|
|
@@ -21,6 +24,16 @@ export declare class IndividualControllerSdk {
|
|
|
21
24
|
* Starts the individual onboarding/bootstrap flow.
|
|
22
25
|
*/
|
|
23
26
|
startIndividualOrganization(input: IndividualOrganizationBootstrapInput): Promise<IndividualOrganizationStartResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Searches one existing family/individual registration by the phone-first
|
|
29
|
+
* business key used by channel apps.
|
|
30
|
+
*/
|
|
31
|
+
searchFamilyOrganization(ctx: RouteContext, input: FamilyOrganizationSearchInput): Promise<FamilyOrganizationSummary | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Searches one existing family/individual registration and starts the
|
|
34
|
+
* bootstrap flow only when the registration is still missing.
|
|
35
|
+
*/
|
|
36
|
+
ensureFamilyOrganizationRegistration(ctx: RouteContext, input: EnsureFamilyOrganizationRegistrationInput): Promise<EnsureFamilyOrganizationRegistrationResult>;
|
|
24
37
|
/**
|
|
25
38
|
* Confirms the order returned by `startIndividualOrganization(...)`.
|
|
26
39
|
*/
|
|
@@ -59,6 +72,10 @@ export declare class IndividualControllerSdk {
|
|
|
59
72
|
* Grants access to a professional through a consent flow.
|
|
60
73
|
*/
|
|
61
74
|
grantProfessionalAccess(ctx: RouteContext, input: GrantProfessionalAccessInput): Promise<GrantProfessionalAccessResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Closes an existing professional consent by setting its period end.
|
|
77
|
+
*/
|
|
78
|
+
revokeProfessionalAccess(ctx: RouteContext, input: RevokeProfessionalAccessInput): Promise<RevokeProfessionalAccessResult>;
|
|
62
79
|
/**
|
|
63
80
|
* Imports a FHIR/IPS payload and waits until it is indexed.
|
|
64
81
|
*/
|
|
@@ -71,6 +88,11 @@ export declare class IndividualControllerSdk {
|
|
|
71
88
|
* Ingests a FHIR `Communication` and waits for indexing.
|
|
72
89
|
*/
|
|
73
90
|
ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Searches indexed communication channel records by subject and participant
|
|
93
|
+
* identifiers.
|
|
94
|
+
*/
|
|
95
|
+
searchCommunicationParticipants(ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
74
96
|
/**
|
|
75
97
|
* Generates a digital twin projection from subject data.
|
|
76
98
|
*/
|
|
@@ -23,6 +23,20 @@ export class IndividualControllerSdk {
|
|
|
23
23
|
assertFacadeCapability(this.capabilities, ActorCapabilities.IndividualBootstrap, ActorKinds.IndividualController, 'startIndividualOrganization');
|
|
24
24
|
return requireClientMethod(this.client, 'startIndividualOrganization')(input);
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Searches one existing family/individual registration by the phone-first
|
|
28
|
+
* business key used by channel apps.
|
|
29
|
+
*/
|
|
30
|
+
searchFamilyOrganization(ctx, input) {
|
|
31
|
+
return requireClientMethod(this.client, 'searchFamilyOrganization')(ctx, input);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Searches one existing family/individual registration and starts the
|
|
35
|
+
* bootstrap flow only when the registration is still missing.
|
|
36
|
+
*/
|
|
37
|
+
ensureFamilyOrganizationRegistration(ctx, input) {
|
|
38
|
+
return requireClientMethod(this.client, 'ensureFamilyOrganizationRegistration')(ctx, input);
|
|
39
|
+
}
|
|
26
40
|
/**
|
|
27
41
|
* Confirms the order returned by `startIndividualOrganization(...)`.
|
|
28
42
|
*/
|
|
@@ -85,6 +99,13 @@ export class IndividualControllerSdk {
|
|
|
85
99
|
assertFacadeCapability(this.capabilities, ActorCapabilities.ConsentGrantProfessionalAccess, ActorKinds.IndividualController, 'grantProfessionalAccess');
|
|
86
100
|
return requireClientMethod(this.client, 'grantProfessionalAccess')(ctx, input);
|
|
87
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Closes an existing professional consent by setting its period end.
|
|
104
|
+
*/
|
|
105
|
+
revokeProfessionalAccess(ctx, input) {
|
|
106
|
+
assertFacadeCapability(this.capabilities, ActorCapabilities.ConsentGrantProfessionalAccess, ActorKinds.IndividualController, 'revokeProfessionalAccess');
|
|
107
|
+
return requireClientMethod(this.client, 'revokeProfessionalAccess')(ctx, input);
|
|
108
|
+
}
|
|
88
109
|
/**
|
|
89
110
|
* Imports a FHIR/IPS payload and waits until it is indexed.
|
|
90
111
|
*/
|
|
@@ -106,6 +127,13 @@ export class IndividualControllerSdk {
|
|
|
106
127
|
assertFacadeCapability(this.capabilities, ActorCapabilities.IndividualIngestCommunication, ActorKinds.IndividualController, 'ingestCommunicationAndUpdateIndex');
|
|
107
128
|
return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
|
|
108
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Searches indexed communication channel records by subject and participant
|
|
132
|
+
* identifiers.
|
|
133
|
+
*/
|
|
134
|
+
searchCommunicationParticipants(ctx, input) {
|
|
135
|
+
return requireClientMethod(this.client, 'searchCommunicationParticipants')(ctx, input);
|
|
136
|
+
}
|
|
109
137
|
/**
|
|
110
138
|
* Generates a digital twin projection from subject data.
|
|
111
139
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
1
|
+
import { type NodeOrganizationDidBindingInput, type NodeLegalOrganizationVerificationTransactionInput, type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
2
|
import type { RouteContext } from '../individual-onboarding.js';
|
|
3
3
|
import type { HostRouteContext, HostedTenantLifecycleInput } from '../host-onboarding.js';
|
|
4
4
|
import type { EmployeeDeviceActivationResult, EmployeeDeviceActivationRequestInput } from '../device-activation.js';
|
|
@@ -19,6 +19,27 @@ export declare class OrganizationControllerSdk {
|
|
|
19
19
|
* @param client Runtime client implementation used to submit and poll GW flows.
|
|
20
20
|
*/
|
|
21
21
|
constructor(client: NodeRuntimeClient, capabilities?: readonly NodeCapability[] | undefined);
|
|
22
|
+
/**
|
|
23
|
+
* Starts the host-side legal-organization verification transaction that GW
|
|
24
|
+
* CORE forwards to ICA `_verify`.
|
|
25
|
+
*
|
|
26
|
+
* This is intentionally distinct from the older host `_activate` step:
|
|
27
|
+
* - `_transaction` carries signed evidence and controller business binding
|
|
28
|
+
* - `_transaction` is complete on its own for the new flow
|
|
29
|
+
* - `_activate` remains only for the legacy ICA `_verify` compatibility path
|
|
30
|
+
*/
|
|
31
|
+
submitLegalOrganizationVerificationTransaction(hostCtx: HostRouteContext, input: NodeLegalOrganizationVerificationTransactionInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Binds the current tenant organization DID document to one public alias
|
|
34
|
+
* view.
|
|
35
|
+
*
|
|
36
|
+
* Contract:
|
|
37
|
+
* - the tenant path identifies the organization
|
|
38
|
+
* - `organization.url`, when present, provides the public aliases/domains to
|
|
39
|
+
* bind
|
|
40
|
+
* - `controller.sameAs` is optional corroborating identity evidence
|
|
41
|
+
*/
|
|
42
|
+
submitOrganizationDidBinding(ctx: RouteContext, input: NodeOrganizationDidBindingInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
22
43
|
/**
|
|
23
44
|
* Creates an employee/professional under the current organization tenant.
|
|
24
45
|
*/
|
|
@@ -16,6 +16,31 @@ export class OrganizationControllerSdk {
|
|
|
16
16
|
this.client = client;
|
|
17
17
|
this.capabilities = capabilities;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Starts the host-side legal-organization verification transaction that GW
|
|
21
|
+
* CORE forwards to ICA `_verify`.
|
|
22
|
+
*
|
|
23
|
+
* This is intentionally distinct from the older host `_activate` step:
|
|
24
|
+
* - `_transaction` carries signed evidence and controller business binding
|
|
25
|
+
* - `_transaction` is complete on its own for the new flow
|
|
26
|
+
* - `_activate` remains only for the legacy ICA `_verify` compatibility path
|
|
27
|
+
*/
|
|
28
|
+
submitLegalOrganizationVerificationTransaction(hostCtx, input, pollOptions) {
|
|
29
|
+
return requireClientMethod(this.client, 'submitLegalOrganizationVerificationTransaction')(hostCtx, input, pollOptions);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Binds the current tenant organization DID document to one public alias
|
|
33
|
+
* view.
|
|
34
|
+
*
|
|
35
|
+
* Contract:
|
|
36
|
+
* - the tenant path identifies the organization
|
|
37
|
+
* - `organization.url`, when present, provides the public aliases/domains to
|
|
38
|
+
* bind
|
|
39
|
+
* - `controller.sameAs` is optional corroborating identity evidence
|
|
40
|
+
*/
|
|
41
|
+
submitOrganizationDidBinding(ctx, input, pollOptions) {
|
|
42
|
+
return requireClientMethod(this.client, 'submitOrganizationDidBinding')(ctx, input, pollOptions);
|
|
43
|
+
}
|
|
19
44
|
/**
|
|
20
45
|
* Creates an employee/professional under the current organization tenant.
|
|
21
46
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
2
|
import type { IndividualOrganizationBootstrapInput, IndividualOrganizationStartResult } from '../individual-start.js';
|
|
3
3
|
import type { RouteContext } from '../individual-onboarding.js';
|
|
4
|
-
import type { ClinicalBundleSearchInput, CommunicationIngestionInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js';
|
|
4
|
+
import type { ClinicalBundleSearchInput, CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js';
|
|
5
5
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
6
6
|
export declare class PersonalSdk {
|
|
7
7
|
private readonly client;
|
|
@@ -14,6 +14,8 @@ export declare class PersonalSdk {
|
|
|
14
14
|
importIpsOrFhirAndUpdateIndex(ctx: RouteContext, input: IpsOrFhirImportInput): Promise<SubmitAndPollResult>;
|
|
15
15
|
/** Ingests canonical Communication and waits for projection completion. */
|
|
16
16
|
ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
|
|
17
|
+
/** Searches indexed communication channel records by subject and participant identifiers. */
|
|
18
|
+
searchCommunicationParticipants(ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
17
19
|
/** Triggers digital twin generation from subject data. */
|
|
18
20
|
generateDigitalTwinFromSubjectData(ctx: RouteContext, input: DigitalTwinGenerationInput): Promise<SubmitAndPollResult>;
|
|
19
21
|
/** Searches indexed clinical bundles for the current subject/controller context. */
|
|
@@ -20,6 +20,10 @@ export class PersonalSdk {
|
|
|
20
20
|
ingestCommunicationAndUpdateIndex(ctx, input) {
|
|
21
21
|
return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
|
|
22
22
|
}
|
|
23
|
+
/** Searches indexed communication channel records by subject and participant identifiers. */
|
|
24
|
+
searchCommunicationParticipants(ctx, input) {
|
|
25
|
+
return requireClientMethod(this.client, 'searchCommunicationParticipants')(ctx, input);
|
|
26
|
+
}
|
|
23
27
|
/** Triggers digital twin generation from subject data. */
|
|
24
28
|
generateDigitalTwinFromSubjectData(ctx, input) {
|
|
25
29
|
return requireClientMethod(this.client, 'generateDigitalTwinFromSubjectData')(ctx, input);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
2
|
import type { RouteContext } from '../individual-onboarding.js';
|
|
3
3
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
4
|
-
import type { CommunicationIngestionInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult } from '../resource-operations.js';
|
|
4
|
+
import type { CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult } from '../resource-operations.js';
|
|
5
5
|
/**
|
|
6
6
|
* Professional-oriented facade for runtime actions that belong to the
|
|
7
7
|
* professional actor itself after tenant and employee provisioning have already
|
|
@@ -29,10 +29,25 @@ export declare class ProfessionalSdk {
|
|
|
29
29
|
* `NodeHttpClient({ ctx })` instead of being repeated on every call.
|
|
30
30
|
*/
|
|
31
31
|
requestSmartToken(input: SmartTokenRequestInput): Promise<SmartTokenExchangeResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Executes one clinical `Bundle/_search` using the professional actor
|
|
34
|
+
* session and tenant route context.
|
|
35
|
+
*/
|
|
36
|
+
searchClinicalBundle(ctx: RouteContext, input: ClinicalBundleSearchInput): Promise<SubmitAndPollResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Reads the latest IPS-oriented document projection available to the
|
|
39
|
+
* professional actor for one subject.
|
|
40
|
+
*/
|
|
41
|
+
getLatestIps(ctx: RouteContext, input: Omit<ClinicalBundleSearchInput, 'includedTypes'>): Promise<SubmitAndPollResult>;
|
|
32
42
|
/**
|
|
33
43
|
* Ingests a FHIR `Communication` and waits for indexing.
|
|
34
44
|
*/
|
|
35
45
|
ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Searches indexed communication channel records by subject and participant
|
|
48
|
+
* identifiers.
|
|
49
|
+
*/
|
|
50
|
+
searchCommunicationParticipants(ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
36
51
|
/**
|
|
37
52
|
* Grants access to a professional through a consent flow.
|
|
38
53
|
*/
|
|
@@ -31,12 +31,33 @@ export class ProfessionalSdk {
|
|
|
31
31
|
requestSmartToken(input) {
|
|
32
32
|
return requireClientMethod(this.client, 'requestSmartToken')(input);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Executes one clinical `Bundle/_search` using the professional actor
|
|
36
|
+
* session and tenant route context.
|
|
37
|
+
*/
|
|
38
|
+
searchClinicalBundle(ctx, input) {
|
|
39
|
+
return requireClientMethod(this.client, 'searchClinicalBundle')(ctx, input);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reads the latest IPS-oriented document projection available to the
|
|
43
|
+
* professional actor for one subject.
|
|
44
|
+
*/
|
|
45
|
+
getLatestIps(ctx, input) {
|
|
46
|
+
return requireClientMethod(this.client, 'getLatestIps')(ctx, input);
|
|
47
|
+
}
|
|
34
48
|
/**
|
|
35
49
|
* Ingests a FHIR `Communication` and waits for indexing.
|
|
36
50
|
*/
|
|
37
51
|
ingestCommunicationAndUpdateIndex(ctx, input) {
|
|
38
52
|
return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
|
|
39
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Searches indexed communication channel records by subject and participant
|
|
56
|
+
* identifiers.
|
|
57
|
+
*/
|
|
58
|
+
searchCommunicationParticipants(ctx, input) {
|
|
59
|
+
return requireClientMethod(this.client, 'searchCommunicationParticipants')(ctx, input);
|
|
60
|
+
}
|
|
40
61
|
/**
|
|
41
62
|
* Grants access to a professional through a consent flow.
|
|
42
63
|
*/
|