gdc-sdk-node-ts 2.1.4 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +11 -5
  2. package/dist/backend-profile-runtime.d.ts +23 -0
  3. package/dist/backend-profile-runtime.js +23 -0
  4. package/dist/backend-profile-workspace.d.ts +48 -0
  5. package/dist/backend-profile-workspace.js +91 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.js +3 -0
  8. package/dist/individual-controller-backend-runtime.d.ts +6 -1
  9. package/dist/individual-controller-backend-runtime.js +7 -0
  10. package/dist/node-runtime-client.d.ts +51 -4
  11. package/dist/node-runtime-client.js +148 -4
  12. package/dist/orchestration/client-port.d.ts +6 -1
  13. package/dist/orchestration/individual-controller-sdk.d.ts +46 -1
  14. package/dist/orchestration/individual-controller-sdk.js +59 -0
  15. package/dist/orchestration/individual-member-sdk.d.ts +35 -1
  16. package/dist/orchestration/individual-member-sdk.js +44 -0
  17. package/dist/orchestration/personal-sdk.d.ts +3 -1
  18. package/dist/orchestration/personal-sdk.js +4 -0
  19. package/dist/orchestration/professional-sdk.d.ts +11 -1
  20. package/dist/orchestration/professional-sdk.js +14 -0
  21. package/dist/professional-backend-runtime.d.ts +6 -1
  22. package/dist/professional-backend-runtime.js +7 -0
  23. package/dist/profile-workspace.d.ts +12 -0
  24. package/dist/profile-workspace.js +15 -0
  25. package/dist/resource-operations.d.ts +185 -4
  26. package/dist/resource-operations.js +267 -3
  27. package/dist/runtime-client-paths.d.ts +8 -2
  28. package/dist/runtime-client-paths.js +6 -0
  29. package/dist/runtime-route-context.js +18 -1
  30. package/dist/runtime-transport.d.ts +13 -1
  31. package/dist/runtime-transport.js +18 -3
  32. package/dist/server-profile-protection.d.ts +64 -0
  33. package/dist/server-profile-protection.js +110 -0
  34. package/dist/server-profile-session.d.ts +115 -0
  35. package/dist/server-profile-session.js +259 -0
  36. package/dist/session.d.ts +7 -0
  37. package/dist/session.js +10 -0
  38. package/package.json +3 -3
  39. package/dist/legal-organization-onboarding-facade.d.ts +0 -70
  40. package/dist/legal-organization-onboarding-facade.js +0 -169
  41. package/dist/lifecycle-examples.d.ts +0 -7
  42. package/dist/lifecycle-examples.js +0 -8
  43. package/dist/runtime-software-proof.d.ts +0 -51
  44. package/dist/runtime-software-proof.js +0 -34
  45. package/dist/simple-device-activation.d.ts +0 -44
  46. package/dist/simple-device-activation.js +0 -44
  47. package/dist/simple-host-onboarding.d.ts +0 -27
  48. package/dist/simple-host-onboarding.js +0 -39
  49. package/dist/simple-individual-onboarding.d.ts +0 -27
  50. package/dist/simple-individual-onboarding.js +0 -38
  51. package/dist/simple-individual-start.d.ts +0 -45
  52. package/dist/simple-individual-start.js +0 -59
  53. package/dist/simple-poll-options.d.ts +0 -5
  54. package/dist/simple-poll-options.js +0 -17
  55. package/dist/simple-smart-token.d.ts +0 -58
  56. package/dist/simple-smart-token.js +0 -85
@@ -1,19 +1,20 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
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 { DIDCOMM_PLAINTEXT_JSON_MEDIA_TYPE, } from 'gdc-common-utils-ts/utils/didcomm-submit';
4
- import { buildAppHeaders, createBootstrapFacade, resolveAppInfo, } from 'gdc-sdk-core-ts';
4
+ import { buildAppHeaders, createBootstrapFacade, decodeTransportResponse, renderCommunicationOutboxRequest, renderGatewayMessageRequest, renderTransportPollRequest, resolveAppInfo, TransportProfiles, } from 'gdc-sdk-core-ts';
5
5
  import { pollUntilCompleteWithMethod } from './async-polling.js';
6
6
  import { confirmLegalOrganizationOrderWithDeps, HostLifecycleRequestType, HostedTenantLifecycleRequestType, submitHostedTenantLifecycleWithDeps, } from './host-onboarding.js';
7
7
  import { confirmIndividualOrganizationOrderWithDeps, } from './individual-onboarding.js';
8
8
  import { ensureFamilyOrganizationRegistrationWithDeps, } from './family-organization-registration.js';
9
9
  import { searchFamilyOrganizationWithDeps } from './family-organization-search.js';
10
10
  import { requestSmartTokenWithDeps } from './smart-token.js';
11
+ import { activateEmployeeDeviceWithActivationCodeWithDeps, activateEmployeeDeviceWithActivationRequestWithDeps, } from './device-activation.js';
11
12
  import { extractOfferIdFromResponseBody, extractOfferPreviewFromResponseBody, } from './order-offer-summary.js';
12
13
  import { confirmOrganizationLicenseOrderWithDeps } from './organization-license-order.js';
13
14
  import { startIndividualOrganizationWithDeps } from './individual-start.js';
14
- 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
+ import { createOrganizationEmployeeWithDeps, disableIndividualMemberWithDeps, disableIndividualOrganizationWithDeps, disableOrganizationEmployeeWithDeps, listIndividualLicenseOffersWithDeps, listIndividualLicenseOrdersWithDeps, listIndividualLicensesWithDeps, addFreeIndividualMemberLicensesWithDeps, issueIndividualMemberLicenseWithDeps, transitionIndividualMemberLicenseWithDeps, listOrganizationLicenseOffersWithDeps, listOrganizationLicenseOrdersWithDeps, listOrganizationLicensesWithDeps, grantProfessionalAccessWithDeps, ingestCommunicationAndUpdateIndexWithDeps, buildVitalSignBatchCommunicationFromSearchResponse, registerBlockchainArtifactAndUpdateIndexWithDeps, revokeProfessionalAccessWithDeps, searchCommunicationParticipantsWithDeps, purgeIndividualMemberWithDeps, purgeIndividualOrganizationWithDeps, purgeOrganizationEmployeeWithDeps, searchIndividualLicensesWithDeps, searchIndividualLicenseOffersWithDeps, searchIndividualLicenseOrdersWithDeps, searchOrganizationLicensesWithDeps, searchOrganizationLicenseOffersWithDeps, searchOrganizationLicenseOrdersWithDeps, searchOrganizationEmployeesWithDeps, searchClinicalBundleWithDeps, searchLatestIpsWithDeps, upsertRelatedPersonAndPollWithDeps, normalizeCommunicationPathFormatSegment, } from './resource-operations.js';
15
16
  import { submitAndPollWithMethods } from './orchestration/client-port.js';
16
- import { buildRuntimeHeaders, fetchWithTimeout, parseResponseBody, pollBatchResponseWithRuntimeConfig, postJsonWithRuntimeConfig, } from './runtime-transport.js';
17
+ import { buildRuntimeHeaders, fetchWithTimeout, parseResponseBody, pollBatchResponseWithRuntimeConfig, postJsonWithRuntimeConfig, postRenderedWithRuntimeConfig, } from './runtime-transport.js';
17
18
  import { activateOrganizationInGatewayFromIcaProofWithDeps, submitLegalOrganizationIssueWithDeps, submitLegalOrganizationVerificationTransactionWithDeps, submitOrganizationDidBindingWithDeps, } from './runtime-host-submission.js';
18
19
  import { buildGrantProfessionalAccessClaimsWithCid } from './runtime-consent.js';
19
20
  import { RuntimeClientPaths } from './runtime-client-paths.js';
@@ -35,6 +36,7 @@ export class HttpRuntimeClient {
35
36
  defaultHeaders: this.defaultHeaders,
36
37
  requestTimeoutMs: this.requestTimeoutMs,
37
38
  httpTraceFile: this.httpTraceFile,
39
+ fetchImpl: this.fetchImpl,
38
40
  };
39
41
  }
40
42
  /**
@@ -62,6 +64,10 @@ export class HttpRuntimeClient {
62
64
  ...(options.defaultHeaders || {}),
63
65
  };
64
66
  this.requestTimeoutMs = Math.max(1, Math.floor(options.requestTimeoutMs ?? 15000));
67
+ this.transportProfile = options.transportProfile || TransportProfiles.DidcommPlainJson;
68
+ this.secureTransportAdapter = options.secureTransportAdapter;
69
+ this.communicationFormatRenderers = options.communicationFormatRenderers || {};
70
+ this.fetchImpl = options.fetchImpl;
65
71
  this.httpTraceFile = String(process.env.SDK_HTTP_TRACE_FILE || '').trim() || undefined;
66
72
  this.paths = new RuntimeClientPaths(this.ctx);
67
73
  }
@@ -109,6 +115,15 @@ export class HttpRuntimeClient {
109
115
  async submitAndPoll(submitPath, pollPath, payload, pollOptions) {
110
116
  return submitAndPollWithMethods(this, submitPath, pollPath, payload, pollOptions);
111
117
  }
118
+ async submitAndPollWithBearerToken(bearerToken, submitPath, pollPath, payload, pollOptions) {
119
+ const config = { ...this.transportConfig, bearerToken };
120
+ const submitted = await postJsonWithRuntimeConfig(config, submitPath, payload, DIDCOMM_PLAINTEXT_JSON_MEDIA_TYPE);
121
+ const poll = await pollUntilCompleteWithMethod((path, request) => pollBatchResponseWithRuntimeConfig(config, path, request), pollPath, { thid: String(payload.thid) }, pollOptions);
122
+ return {
123
+ submit: { status: submitted.status, location: submitted.location, body: submitted.body },
124
+ poll,
125
+ };
126
+ }
112
127
  /**
113
128
  * Starts the host-side legal-organization verification transaction that GW
114
129
  * CORE forwards to ICA `_verify`.
@@ -570,6 +585,30 @@ export class HttpRuntimeClient {
570
585
  submitAndPoll: this.submitAndPoll.bind(this),
571
586
  });
572
587
  }
588
+ /** Adds zero-cost seats to one individual organization's member pool. */
589
+ async addFreeIndividualMemberLicenses(ctx, input) {
590
+ return addFreeIndividualMemberLicensesWithDeps(ctx, input, {
591
+ individualLicenseActionPath: this.paths.individualLicenseActionPath.bind(this.paths),
592
+ individualLicenseActionPollPath: this.paths.individualLicenseActionPollPath.bind(this.paths),
593
+ submitAndPoll: this.submitAndPoll.bind(this),
594
+ });
595
+ }
596
+ /** Reserves one individual seat for an existing FHIR v3-role contact. */
597
+ async issueIndividualMemberLicense(ctx, input) {
598
+ return issueIndividualMemberLicenseWithDeps(ctx, input, {
599
+ individualLicenseActionPath: this.paths.individualLicenseActionPath.bind(this.paths),
600
+ individualLicenseActionPollPath: this.paths.individualLicenseActionPollPath.bind(this.paths),
601
+ submitAndPoll: this.submitAndPoll.bind(this),
602
+ });
603
+ }
604
+ /** Accepts, deactivates or releases one individual-member seat. */
605
+ async transitionIndividualMemberLicense(ctx, action, input) {
606
+ return transitionIndividualMemberLicenseWithDeps(ctx, action, input, {
607
+ individualLicenseActionPath: this.paths.individualLicenseActionPath.bind(this.paths),
608
+ individualLicenseActionPollPath: this.paths.individualLicenseActionPollPath.bind(this.paths),
609
+ submitAndPoll: this.submitAndPoll.bind(this),
610
+ });
611
+ }
573
612
  async searchIndividualLicenseOffers(ctx, input) {
574
613
  return searchIndividualLicenseOffersWithDeps(ctx, input, {
575
614
  individualLicenseOfferSearchPath: this.paths.individualLicenseOfferSearchPath.bind(this.paths),
@@ -655,6 +694,27 @@ export class HttpRuntimeClient {
655
694
  setTokenCache: (tokenCacheKey, token) => this.tokenCache.set(tokenCacheKey, token),
656
695
  });
657
696
  }
697
+ /**
698
+ * Registers any actor profile device through activation-code exchange plus
699
+ * GW DCR. The historical helper name says employee, but the transport is
700
+ * actor-neutral and is used by portal and telephone profile runtimes.
701
+ */
702
+ async activateProfileDeviceWithActivationRequest(input) {
703
+ const routeCtx = this.paths.routeCtxFromInput(input);
704
+ return activateEmployeeDeviceWithActivationRequestWithDeps({
705
+ routeCtx,
706
+ input,
707
+ activateEmployeeDeviceWithActivationCode: (ctx, activationInput) => activateEmployeeDeviceWithActivationCodeWithDeps({
708
+ routeCtx: ctx,
709
+ input: activationInput,
710
+ identityTokenExchangePath: this.paths.identityTokenExchangePath.bind(this.paths),
711
+ identityTokenExchangePollPath: this.paths.identityTokenExchangePollPath.bind(this.paths),
712
+ identityDeviceDcrPath: this.paths.identityDeviceDcrPath.bind(this.paths),
713
+ identityDeviceDcrPollPath: this.paths.identityDeviceDcrPollPath.bind(this.paths),
714
+ submitAndPollWithBearerToken: this.submitAndPollWithBearerToken.bind(this),
715
+ }),
716
+ });
717
+ }
658
718
  /**
659
719
  * Creates or updates a `RelatedPerson` for non-employee family/caregiver
660
720
  * roles such as a grandfather, guardian, or external caregiver.
@@ -674,12 +734,92 @@ export class HttpRuntimeClient {
674
734
  * @param input Communication payload plus route/format options.
675
735
  */
676
736
  async ingestCommunicationAndUpdateIndex(ctx, input) {
737
+ if (input.communicationJob) {
738
+ return this.submitCommunicationOutboxJobAndPoll(ctx, input);
739
+ }
677
740
  return ingestCommunicationAndUpdateIndexWithDeps(ctx, input, {
678
741
  individualCommunicationBatchPath: this.paths.individualCommunicationBatchPath.bind(this.paths),
679
742
  individualCommunicationPollPath: this.paths.individualCommunicationPollPath.bind(this.paths),
680
743
  submitAndPoll: this.submitAndPoll.bind(this),
681
744
  });
682
745
  }
746
+ /**
747
+ * Renders and submits one canonical clinical outbox job without requiring
748
+ * BFF, portal or assistant consumers to know GW wire envelopes.
749
+ */
750
+ async submitCommunicationOutboxJobAndPoll(ctx, input) {
751
+ const job = input.communicationJob;
752
+ const profile = input.transportProfile || this.transportProfile;
753
+ const format = normalizeCommunicationPathFormatSegment(input.clinicalFormat || input.pathFormatSegment);
754
+ const submitPath = this.paths.individualCommunicationBatchPath(ctx, format);
755
+ const pollPath = this.paths.individualCommunicationPollPath(ctx, format);
756
+ const renderedSubmit = await renderCommunicationOutboxRequest(job, profile, this.secureTransportAdapter, {
757
+ clinicalFormat: input.clinicalFormat || input.pathFormatSegment || 'api',
758
+ formatRenderers: this.communicationFormatRenderers,
759
+ });
760
+ const submit = await postRenderedWithRuntimeConfig(this.transportConfig, submitPath, renderedSubmit);
761
+ const poll = await pollUntilCompleteWithMethod(async (path, request) => {
762
+ const renderedPoll = await renderTransportPollRequest(request.thid, profile, this.secureTransportAdapter);
763
+ const response = await postRenderedWithRuntimeConfig(this.transportConfig, path, renderedPoll);
764
+ return {
765
+ status: response.status,
766
+ body: response.status === 202
767
+ ? response.body
768
+ : await decodeTransportResponse(response.body, profile, this.secureTransportAdapter),
769
+ retryAfterMs: response.retryAfterMs,
770
+ };
771
+ }, pollPath, { thid: job.thid }, input.pollOptions);
772
+ return {
773
+ submit: {
774
+ status: submit.status,
775
+ location: submit.location,
776
+ body: submit.body,
777
+ },
778
+ poll,
779
+ };
780
+ }
781
+ /** Applies the configured wire profile to subject-scoped clinical searches. */
782
+ async submitClinicalMessageAndPoll(submitPath, pollPath, payload, profile, pollOptions) {
783
+ const renderedSubmit = await renderGatewayMessageRequest(payload, profile, this.secureTransportAdapter);
784
+ const submit = await postRenderedWithRuntimeConfig(this.transportConfig, submitPath, renderedSubmit);
785
+ const poll = await pollUntilCompleteWithMethod(async (path, request) => {
786
+ const renderedPoll = await renderTransportPollRequest(request.thid, profile, this.secureTransportAdapter);
787
+ const response = await postRenderedWithRuntimeConfig(this.transportConfig, path, renderedPoll);
788
+ return {
789
+ status: response.status,
790
+ body: response.status === 202
791
+ ? response.body
792
+ : await decodeTransportResponse(response.body, profile, this.secureTransportAdapter),
793
+ retryAfterMs: response.retryAfterMs,
794
+ };
795
+ }, pollPath, { thid: renderedSubmit.thid }, pollOptions);
796
+ return {
797
+ submit: { status: submit.status, location: submit.location, body: submit.body },
798
+ poll,
799
+ };
800
+ }
801
+ /**
802
+ * Registers one FHIR resource or raw artifact on blockchain and waits until
803
+ * GW has indexed the resulting DocumentReference projection.
804
+ */
805
+ async registerBlockchainArtifactAndUpdateIndex(ctx, input) {
806
+ return registerBlockchainArtifactAndUpdateIndexWithDeps(ctx, input, {
807
+ individualDocumentReferenceBatchPath: this.paths.individualDocumentReferenceBatchPath.bind(this.paths),
808
+ individualDocumentReferencePollPath: this.paths.individualDocumentReferencePollPath.bind(this.paths),
809
+ submitAndPoll: this.submitAndPoll.bind(this),
810
+ });
811
+ }
812
+ /**
813
+ * Builds and submits a Communication carrying the selected vital-sign day
814
+ * batch artifacts from a paginated search response.
815
+ */
816
+ async submitVitalSignBatchCommunicationFromSearchResponse(ctx, input) {
817
+ return ingestCommunicationAndUpdateIndexWithDeps(ctx, buildVitalSignBatchCommunicationFromSearchResponse(input), {
818
+ individualCommunicationBatchPath: this.paths.individualCommunicationBatchPath.bind(this.paths),
819
+ individualCommunicationPollPath: this.paths.individualCommunicationPollPath.bind(this.paths),
820
+ submitAndPoll: this.submitAndPoll.bind(this),
821
+ });
822
+ }
683
823
  /**
684
824
  * Searches communication channel records by subject and participant
685
825
  * identifiers through `Communication/_search`.
@@ -710,7 +850,7 @@ export class HttpRuntimeClient {
710
850
  return searchClinicalBundleWithDeps(ctx, input, {
711
851
  bundleSearchPath: this.paths.individualBundleSearchPath.bind(this.paths),
712
852
  bundleSearchPollPath: this.paths.individualBundleSearchPollPath.bind(this.paths),
713
- submitAndPoll: this.submitAndPoll.bind(this),
853
+ submitAndPoll: (submitPath, pollPath, payload, pollOptions) => this.submitClinicalMessageAndPoll(submitPath, pollPath, payload, input.transportProfile || this.transportProfile, pollOptions),
714
854
  });
715
855
  }
716
856
  /**
@@ -808,6 +948,8 @@ export class HttpRuntimeClient {
808
948
  individualFamilyOrganizationPurgePollPath(ctx) { return this.paths.individualFamilyOrganizationPurgePollPath(ctx); }
809
949
  individualLicenseSearchPath(ctx) { return this.paths.individualLicenseSearchPath(ctx); }
810
950
  individualLicenseSearchPollPath(ctx) { return this.paths.individualLicenseSearchPollPath(ctx); }
951
+ individualLicenseActionPath(ctx, action) { return this.paths.individualLicenseActionPath(ctx, action); }
952
+ individualLicenseActionPollPath(ctx, action) { return this.paths.individualLicenseActionPollPath(ctx, action); }
811
953
  individualLicenseOfferSearchPath(ctx) { return this.paths.individualLicenseOfferSearchPath(ctx); }
812
954
  individualLicenseOfferSearchPollPath(ctx) { return this.paths.individualLicenseOfferSearchPollPath(ctx); }
813
955
  individualLicenseOrderSearchPath(ctx) { return this.paths.individualLicenseOrderSearchPath(ctx); }
@@ -824,6 +966,8 @@ export class HttpRuntimeClient {
824
966
  individualCommunicationPollPath(ctx, format) { return this.paths.individualCommunicationPollPath(ctx, format); }
825
967
  individualCommunicationSearchPath(ctx) { return this.paths.individualCommunicationSearchPath(ctx); }
826
968
  individualCommunicationSearchPollPath(ctx) { return this.paths.individualCommunicationSearchPollPath(ctx); }
969
+ individualDocumentReferenceBatchPath(ctx) { return this.paths.individualDocumentReferenceBatchPath(ctx); }
970
+ individualDocumentReferencePollPath(ctx) { return this.paths.individualDocumentReferencePollPath(ctx); }
827
971
  individualBundleSearchPath(ctx) { return this.paths.individualBundleSearchPath(ctx); }
828
972
  individualBundleSearchPollPath(ctx) { return this.paths.individualBundleSearchPollPath(ctx); }
829
973
  identityTokenExchangePath(ctx) { return this.paths.identityTokenExchangePath(ctx); }
@@ -13,7 +13,7 @@ import type { FamilyOrganizationSearchInput } from '../family-organization-searc
13
13
  import type { EnsureFamilyOrganizationRegistrationInput, EnsureFamilyOrganizationRegistrationResult } from '../family-organization-registration.js';
14
14
  import type { OrganizationLicenseOrderConfirmInput } from '../organization-license-order.js';
15
15
  import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
16
- import type { CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IpsOrFhirImportInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
16
+ import type { CommunicationIngestionInput, BlockchainArtifactRegistrationInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, VitalSignBatchCommunicationFromSearchResponseInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualMemberLicenseAddInput, IndividualMemberLicenseInvitationInput, IndividualMemberLicenseTransitionInput, IpsOrFhirImportInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
17
17
  /**
18
18
  * Shared node-runtime activation input.
19
19
  *
@@ -58,6 +58,7 @@ export type RuntimeClient = {
58
58
  submitOrganizationDidBinding?: (ctx: RouteContext, input: NodeOrganizationDidBindingInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
59
59
  activateOrganizationInGatewayFromIcaProof?: (hostCtx: HostRouteContext, input: NodeOrganizationActivationInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
60
60
  confirmLegalOrganizationOrder?: (hostCtx: HostRouteContext, input: LegalOrganizationOrderInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
61
+ submitVitalSignBatchCommunicationFromSearchResponse?: (ctx: RouteContext, input: VitalSignBatchCommunicationFromSearchResponseInput) => Promise<SubmitAndPollResult>;
61
62
  disableHost?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
62
63
  purgeHost?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
63
64
  disableTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
@@ -88,11 +89,15 @@ export type RuntimeClient = {
88
89
  disableIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
89
90
  purgeIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
90
91
  ingestCommunicationAndUpdateIndex?: (ctx: RouteContext, input: CommunicationIngestionInput) => Promise<SubmitAndPollResult>;
92
+ registerBlockchainArtifactAndUpdateIndex?: (ctx: RouteContext, input: BlockchainArtifactRegistrationInput) => Promise<SubmitAndPollResult>;
91
93
  searchCommunicationParticipants?: (ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput) => Promise<SubmitAndPollResult>;
92
94
  grantProfessionalAccess?: (ctx: RouteContext, input: GrantProfessionalAccessInput) => Promise<GrantProfessionalAccessResult>;
93
95
  revokeProfessionalAccess?: (ctx: RouteContext, input: RevokeProfessionalAccessInput) => Promise<RevokeProfessionalAccessResult>;
94
96
  searchIndividualLicenses?: (ctx: RouteContext, input: LicenseListRuntimeSearchInput) => Promise<SubmitAndPollResult>;
95
97
  listIndividualLicenses?: (ctx: RouteContext, input?: LicenseListRuntimeSearchInput) => Promise<SubmitAndPollResult>;
98
+ addFreeIndividualMemberLicenses?: (ctx: RouteContext, input: IndividualMemberLicenseAddInput) => Promise<SubmitAndPollResult>;
99
+ issueIndividualMemberLicense?: (ctx: RouteContext, input: IndividualMemberLicenseInvitationInput) => Promise<SubmitAndPollResult>;
100
+ transitionIndividualMemberLicense?: (ctx: RouteContext, action: '_accept' | '_deactivate' | '_release', input: IndividualMemberLicenseTransitionInput) => Promise<SubmitAndPollResult>;
96
101
  searchIndividualLicenseOffers?: (ctx: RouteContext, input: LicenseOfferRuntimeSearchInput) => Promise<SubmitAndPollResult>;
97
102
  listIndividualLicenseOffers?: (ctx: RouteContext, input?: LicenseOfferRuntimeSearchInput) => Promise<SubmitAndPollResult>;
98
103
  searchIndividualLicenseOrders?: (ctx: RouteContext, input: LicenseOrderRuntimeSearchInput) => Promise<SubmitAndPollResult>;
@@ -1,3 +1,4 @@
1
+ import { type IndividualControllerCredentialInput, type IndividualControllerVpPayloadInput, type IndividualSubjectCredentialInput } from 'gdc-common-utils-ts';
1
2
  import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
2
3
  import type { FamilyOrganizationSummary } from 'gdc-common-utils-ts/utils/family-organization-summary';
3
4
  import type { EnsureFamilyOrganizationRegistrationInput, EnsureFamilyOrganizationRegistrationResult } from '../family-organization-registration.js';
@@ -6,7 +7,7 @@ import type { IndividualOrganizationConfirmOrderInput, RouteContext } from '../i
6
7
  import type { IndividualOrganizationBootstrapInput, IndividualOrganizationStartResult } from '../individual-start.js';
7
8
  import type { NodeCapability } from '../session.js';
8
9
  import type { IndividualOrganizationLifecycleInput } from 'gdc-sdk-core-ts';
9
- import type { ClinicalBundleSearchInput, CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
10
+ import type { BlockchainArtifactRegistrationInput, ClinicalBundleSearchInput, CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualMemberLicenseAddInput, IndividualMemberLicenseInvitationInput, IndividualMemberLicenseTransitionInput, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput } from '../resource-operations.js';
10
11
  import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
11
12
  /**
12
13
  * Individual-controller oriented facade over a `NodeRuntimeClient`.
@@ -85,6 +86,11 @@ export declare class IndividualControllerSdk {
85
86
  * Ingests a FHIR `Communication` and waits for indexing.
86
87
  */
87
88
  ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
89
+ /**
90
+ * Registers one FHIR resource or raw artifact on blockchain before it is
91
+ * attached to a subject communication.
92
+ */
93
+ registerBlockchainArtifactAndUpdateIndex(ctx: RouteContext, input: BlockchainArtifactRegistrationInput): Promise<SubmitAndPollResult>;
88
94
  /**
89
95
  * Searches indexed communication channel records by subject and participant
90
96
  * identifiers.
@@ -110,6 +116,15 @@ export declare class IndividualControllerSdk {
110
116
  * Lists subject/individual-side license seats with optional filters.
111
117
  */
112
118
  listLicenses(ctx: RouteContext, input?: LicenseListRuntimeSearchInput): Promise<SubmitAndPollResult>;
119
+ /** Adds zero-cost member seats to the selected individual organization. */
120
+ addFreeMemberLicenses(ctx: RouteContext, input: IndividualMemberLicenseAddInput): Promise<SubmitAndPollResult>;
121
+ /**
122
+ * Reserves one member seat for an existing FHIR v3 RoleCode contact.
123
+ * ISCO professionals must use Consent without this operation.
124
+ */
125
+ issueMemberInvitationLicense(ctx: RouteContext, input: IndividualMemberLicenseInvitationInput): Promise<SubmitAndPollResult>;
126
+ /** Accepts, deactivates or releases one member invitation seat. */
127
+ transitionMemberLicense(ctx: RouteContext, action: '_accept' | '_deactivate' | '_release', input: IndividualMemberLicenseTransitionInput): Promise<SubmitAndPollResult>;
113
128
  /**
114
129
  * Searches commercial license offers known for the individual/family
115
130
  * context.
@@ -133,6 +148,36 @@ export declare class IndividualControllerSdk {
133
148
  * Requests a SMART/OpenID token for subsequent data access flows.
134
149
  */
135
150
  requestSmartToken(input: SmartTokenRequestInput): Promise<SmartTokenExchangeResult>;
151
+ /**
152
+ * Returns the normalized public continuity aliases that would be embedded in
153
+ * the individual-controller identity VC for SMART/OpenID4VP flows.
154
+ */
155
+ getIdentitySameAs(input: IndividualControllerCredentialInput): string[];
156
+ /**
157
+ * Builds the canonical individual-controller identity VC used by shared
158
+ * SMART VP helpers.
159
+ */
160
+ getIdentityVC(input: IndividualControllerCredentialInput): Record<string, unknown>;
161
+ /**
162
+ * Builds one canonical subject VC for the dependent subject managed by the
163
+ * current controller, for example a child, pet, or another represented
164
+ * individual.
165
+ */
166
+ getSubjectVC(input: IndividualSubjectCredentialInput): Record<string, unknown>;
167
+ /**
168
+ * Builds the canonical individual-controller identity VP payload used by
169
+ * shared SMART/OpenID4VP helpers.
170
+ */
171
+ buildIdentityVpPayload(input: IndividualControllerVpPayloadInput): Record<string, unknown>;
172
+ /**
173
+ * Builds one unsigned compact VP JWT for the canonical
174
+ * individual-controller identity payload.
175
+ */
176
+ buildUnsignedIdentityVpJwt(input: IndividualControllerVpPayloadInput, options?: Readonly<{
177
+ nowSeconds?: number;
178
+ ttlSeconds?: number;
179
+ nonce?: string;
180
+ }>): string;
136
181
  /**
137
182
  * Low-level escape hatch for direct submit/poll flows.
138
183
  */
@@ -1,5 +1,6 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
2
  import { ActorCapabilities, ActorKinds } from 'gdc-common-utils-ts/constants/actor-session';
3
+ import { buildIndividualControllerIdentityVpPayload, buildUnsignedIndividualControllerIdentityVpJwt, getIndividualControllerIdentitySameAs, getIndividualControllerIdentityVC, getIndividualSubjectVC, } from 'gdc-common-utils-ts';
3
4
  import { requireClientMethod, submitAndPollWithClient, } from './client-port.js';
4
5
  import { assertFacadeCapability } from './capability-guard.js';
5
6
  /**
@@ -123,6 +124,13 @@ export class IndividualControllerSdk {
123
124
  assertFacadeCapability(this.capabilities, ActorCapabilities.IndividualIngestCommunication, ActorKinds.IndividualController, 'ingestCommunicationAndUpdateIndex');
124
125
  return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
125
126
  }
127
+ /**
128
+ * Registers one FHIR resource or raw artifact on blockchain before it is
129
+ * attached to a subject communication.
130
+ */
131
+ registerBlockchainArtifactAndUpdateIndex(ctx, input) {
132
+ return requireClientMethod(this.client, 'registerBlockchainArtifactAndUpdateIndex')(ctx, input);
133
+ }
126
134
  /**
127
135
  * Searches indexed communication channel records by subject and participant
128
136
  * identifiers.
@@ -161,6 +169,21 @@ export class IndividualControllerSdk {
161
169
  listLicenses(ctx, input = {}) {
162
170
  return requireClientMethod(this.client, 'listIndividualLicenses')(ctx, input);
163
171
  }
172
+ /** Adds zero-cost member seats to the selected individual organization. */
173
+ addFreeMemberLicenses(ctx, input) {
174
+ return requireClientMethod(this.client, 'addFreeIndividualMemberLicenses')(ctx, input);
175
+ }
176
+ /**
177
+ * Reserves one member seat for an existing FHIR v3 RoleCode contact.
178
+ * ISCO professionals must use Consent without this operation.
179
+ */
180
+ issueMemberInvitationLicense(ctx, input) {
181
+ return requireClientMethod(this.client, 'issueIndividualMemberLicense')(ctx, input);
182
+ }
183
+ /** Accepts, deactivates or releases one member invitation seat. */
184
+ transitionMemberLicense(ctx, action, input) {
185
+ return requireClientMethod(this.client, 'transitionIndividualMemberLicense')(ctx, action, input);
186
+ }
164
187
  /**
165
188
  * Searches commercial license offers known for the individual/family
166
189
  * context.
@@ -194,6 +217,42 @@ export class IndividualControllerSdk {
194
217
  requestSmartToken(input) {
195
218
  return requireClientMethod(this.client, 'requestSmartToken')(input);
196
219
  }
220
+ /**
221
+ * Returns the normalized public continuity aliases that would be embedded in
222
+ * the individual-controller identity VC for SMART/OpenID4VP flows.
223
+ */
224
+ getIdentitySameAs(input) {
225
+ return getIndividualControllerIdentitySameAs(input);
226
+ }
227
+ /**
228
+ * Builds the canonical individual-controller identity VC used by shared
229
+ * SMART VP helpers.
230
+ */
231
+ getIdentityVC(input) {
232
+ return getIndividualControllerIdentityVC(input);
233
+ }
234
+ /**
235
+ * Builds one canonical subject VC for the dependent subject managed by the
236
+ * current controller, for example a child, pet, or another represented
237
+ * individual.
238
+ */
239
+ getSubjectVC(input) {
240
+ return getIndividualSubjectVC(input);
241
+ }
242
+ /**
243
+ * Builds the canonical individual-controller identity VP payload used by
244
+ * shared SMART/OpenID4VP helpers.
245
+ */
246
+ buildIdentityVpPayload(input) {
247
+ return buildIndividualControllerIdentityVpPayload(input);
248
+ }
249
+ /**
250
+ * Builds one unsigned compact VP JWT for the canonical
251
+ * individual-controller identity payload.
252
+ */
253
+ buildUnsignedIdentityVpJwt(input, options = {}) {
254
+ return buildUnsignedIndividualControllerIdentityVpJwt(input, options);
255
+ }
197
256
  /**
198
257
  * Low-level escape hatch for direct submit/poll flows.
199
258
  */
@@ -1,7 +1,8 @@
1
+ import { type IndividualMemberCredentialInput, type IndividualMemberVpPayloadInput } from 'gdc-common-utils-ts';
1
2
  import { type NodeRuntimeClient } from './client-port.js';
2
3
  import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
3
4
  import type { RouteContext } from '../individual-onboarding.js';
4
- import type { RelatedPersonUpsertInput } from '../resource-operations.js';
5
+ import type { ClinicalBundleSearchInput, CommunicationIngestionInput, RelatedPersonUpsertInput } from '../resource-operations.js';
5
6
  export declare class IndividualMemberSdk {
6
7
  private readonly client;
7
8
  constructor(client: NodeRuntimeClient);
@@ -14,4 +15,37 @@ export declare class IndividualMemberSdk {
14
15
  * caregiver, guardian, or family member.
15
16
  */
16
17
  requestSmartToken(input: SmartTokenRequestInput): Promise<SmartTokenExchangeResult>;
18
+ /**
19
+ * Writes clinical content for a subject only after GW authorizes this member's
20
+ * SMART token and accepted RelatedPerson/Consent relationship.
21
+ */
22
+ ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<import("gdc-sdk-core-ts/polling-model.js").SubmitAndPollResult>;
23
+ /** Reads subject-scoped clinical documents permitted to this member. */
24
+ searchClinicalBundle(ctx: RouteContext, input: ClinicalBundleSearchInput): Promise<import("gdc-sdk-core-ts/polling-model.js").SubmitAndPollResult>;
25
+ /** Reads the latest permitted IPS document for the selected subject. */
26
+ getLatestIps(ctx: RouteContext, input: Omit<ClinicalBundleSearchInput, 'includedTypes'>): Promise<import("gdc-sdk-core-ts/polling-model.js").SubmitAndPollResult>;
27
+ /**
28
+ * Returns the normalized public continuity aliases that would be embedded in
29
+ * the individual-member identity VC for SMART/OpenID4VP flows.
30
+ */
31
+ getIdentitySameAs(input: IndividualMemberCredentialInput): string[];
32
+ /**
33
+ * Builds the canonical individual-member identity VC used by shared SMART VP
34
+ * helpers.
35
+ */
36
+ getIdentityVC(input: IndividualMemberCredentialInput): Record<string, unknown>;
37
+ /**
38
+ * Builds the canonical individual-member identity VP payload used by shared
39
+ * SMART/OpenID4VP helpers.
40
+ */
41
+ buildIdentityVpPayload(input: IndividualMemberVpPayloadInput): Record<string, unknown>;
42
+ /**
43
+ * Builds one unsigned compact VP JWT for the canonical individual-member
44
+ * identity payload.
45
+ */
46
+ buildUnsignedIdentityVpJwt(input: IndividualMemberVpPayloadInput, options?: Readonly<{
47
+ nowSeconds?: number;
48
+ ttlSeconds?: number;
49
+ nonce?: string;
50
+ }>): string;
17
51
  }
@@ -1,4 +1,5 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
+ import { buildIndividualMemberIdentityVpPayload, buildUnsignedIndividualMemberIdentityVpJwt, getIndividualMemberIdentitySameAs, getIndividualMemberIdentityVC, } from 'gdc-common-utils-ts';
2
3
  import { requireClientMethod } from './client-port.js';
3
4
  export class IndividualMemberSdk {
4
5
  constructor(client) {
@@ -17,4 +18,47 @@ export class IndividualMemberSdk {
17
18
  requestSmartToken(input) {
18
19
  return requireClientMethod(this.client, 'requestSmartToken')(input);
19
20
  }
21
+ /**
22
+ * Writes clinical content for a subject only after GW authorizes this member's
23
+ * SMART token and accepted RelatedPerson/Consent relationship.
24
+ */
25
+ ingestCommunicationAndUpdateIndex(ctx, input) {
26
+ return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
27
+ }
28
+ /** Reads subject-scoped clinical documents permitted to this member. */
29
+ searchClinicalBundle(ctx, input) {
30
+ return requireClientMethod(this.client, 'searchClinicalBundle')(ctx, input);
31
+ }
32
+ /** Reads the latest permitted IPS document for the selected subject. */
33
+ getLatestIps(ctx, input) {
34
+ return requireClientMethod(this.client, 'getLatestIps')(ctx, input);
35
+ }
36
+ /**
37
+ * Returns the normalized public continuity aliases that would be embedded in
38
+ * the individual-member identity VC for SMART/OpenID4VP flows.
39
+ */
40
+ getIdentitySameAs(input) {
41
+ return getIndividualMemberIdentitySameAs(input);
42
+ }
43
+ /**
44
+ * Builds the canonical individual-member identity VC used by shared SMART VP
45
+ * helpers.
46
+ */
47
+ getIdentityVC(input) {
48
+ return getIndividualMemberIdentityVC(input);
49
+ }
50
+ /**
51
+ * Builds the canonical individual-member identity VP payload used by shared
52
+ * SMART/OpenID4VP helpers.
53
+ */
54
+ buildIdentityVpPayload(input) {
55
+ return buildIndividualMemberIdentityVpPayload(input);
56
+ }
57
+ /**
58
+ * Builds one unsigned compact VP JWT for the canonical individual-member
59
+ * identity payload.
60
+ */
61
+ buildUnsignedIdentityVpJwt(input, options = {}) {
62
+ return buildUnsignedIndividualMemberIdentityVpJwt(input, options);
63
+ }
20
64
  }
@@ -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, CommunicationParticipantRuntimeSearchInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js';
4
+ import type { BlockchainArtifactRegistrationInput, 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
+ /** Registers one FHIR resource or raw artifact on blockchain before communication. */
18
+ registerBlockchainArtifactAndUpdateIndex(ctx: RouteContext, input: BlockchainArtifactRegistrationInput): Promise<SubmitAndPollResult>;
17
19
  /** Searches indexed communication channel records by subject and participant identifiers. */
18
20
  searchCommunicationParticipants(ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput): Promise<SubmitAndPollResult>;
19
21
  /** Triggers digital twin generation from subject data. */
@@ -20,6 +20,10 @@ export class PersonalSdk {
20
20
  ingestCommunicationAndUpdateIndex(ctx, input) {
21
21
  return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
22
22
  }
23
+ /** Registers one FHIR resource or raw artifact on blockchain before communication. */
24
+ registerBlockchainArtifactAndUpdateIndex(ctx, input) {
25
+ return requireClientMethod(this.client, 'registerBlockchainArtifactAndUpdateIndex')(ctx, input);
26
+ }
23
27
  /** Searches indexed communication channel records by subject and participant identifiers. */
24
28
  searchCommunicationParticipants(ctx, input) {
25
29
  return requireClientMethod(this.client, 'searchCommunicationParticipants')(ctx, input);
@@ -2,7 +2,7 @@ import { type ProfessionalEmployeeCredentialInput, type ProfessionalSmartVpPaylo
2
2
  import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
3
3
  import type { RouteContext } from '../individual-onboarding.js';
4
4
  import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
5
- import type { CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult } from '../resource-operations.js';
5
+ import type { BlockchainArtifactRegistrationInput, CommunicationIngestionInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, VitalSignBatchCommunicationFromSearchResponseInput } from '../resource-operations.js';
6
6
  /**
7
7
  * Professional-oriented facade for runtime actions that belong to the
8
8
  * professional actor itself after tenant and employee provisioning have already
@@ -68,6 +68,16 @@ export declare class ProfessionalSdk {
68
68
  * Ingests a FHIR `Communication` and waits for indexing.
69
69
  */
70
70
  ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
71
+ /**
72
+ * Registers one FHIR resource or raw document artifact on blockchain before
73
+ * the artifact is attached to a Communication.
74
+ */
75
+ registerBlockchainArtifactAndUpdateIndex(ctx: RouteContext, input: BlockchainArtifactRegistrationInput): Promise<SubmitAndPollResult>;
76
+ /**
77
+ * Converts a paginated vital-sign search response into one Communication
78
+ * carrying the selected day-batch artifacts and submits it.
79
+ */
80
+ submitVitalSignBatchCommunicationFromSearchResponse(ctx: RouteContext, input: VitalSignBatchCommunicationFromSearchResponseInput): Promise<SubmitAndPollResult>;
71
81
  /**
72
82
  * Searches indexed communication channel records by subject and participant
73
83
  * identifiers.
@@ -80,6 +80,20 @@ export class ProfessionalSdk {
80
80
  ingestCommunicationAndUpdateIndex(ctx, input) {
81
81
  return requireClientMethod(this.client, 'ingestCommunicationAndUpdateIndex')(ctx, input);
82
82
  }
83
+ /**
84
+ * Registers one FHIR resource or raw document artifact on blockchain before
85
+ * the artifact is attached to a Communication.
86
+ */
87
+ registerBlockchainArtifactAndUpdateIndex(ctx, input) {
88
+ return requireClientMethod(this.client, 'registerBlockchainArtifactAndUpdateIndex')(ctx, input);
89
+ }
90
+ /**
91
+ * Converts a paginated vital-sign search response into one Communication
92
+ * carrying the selected day-batch artifacts and submits it.
93
+ */
94
+ submitVitalSignBatchCommunicationFromSearchResponse(ctx, input) {
95
+ return requireClientMethod(this.client, 'submitVitalSignBatchCommunicationFromSearchResponse')(ctx, input);
96
+ }
83
97
  /**
84
98
  * Searches indexed communication channel records by subject and participant
85
99
  * identifiers.
@@ -2,7 +2,7 @@ import type { SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
2
  import type { ProfileLoadRequest } from 'gdc-sdk-core-ts';
3
3
  import type { RouteContext } from './individual-onboarding.js';
4
4
  import type { SmartTokenExchangeResult, SmartTokenRequestInput } from './smart-token.js';
5
- import type { ClinicalBundleSearchInput } from './resource-operations.js';
5
+ import type { BlockchainArtifactRegistrationInput, ClinicalBundleSearchInput } from './resource-operations.js';
6
6
  import { type BackendProfessionalProfile, type BackendProfileRuntimeClient } from './backend-profile-runtime.js';
7
7
  /**
8
8
  * Backend use-case facade for the current professional happy path.
@@ -33,4 +33,9 @@ export declare class ProfessionalBackendRuntime {
33
33
  * Reads the latest IPS-oriented bundle through the professional facade.
34
34
  */
35
35
  getLatestIps(profile: BackendProfessionalProfile, ctx: RouteContext, input: Omit<ClinicalBundleSearchInput, 'includedTypes'>): Promise<SubmitAndPollResult>;
36
+ /**
37
+ * Registers one FHIR resource or raw artifact on blockchain before it is
38
+ * attached to a communication.
39
+ */
40
+ registerBlockchainArtifactAndUpdateIndex(profile: BackendProfessionalProfile, ctx: RouteContext, input: BlockchainArtifactRegistrationInput): Promise<SubmitAndPollResult>;
36
41
  }