gdc-sdk-node-ts 2.7.8 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -10
- package/dist/individual-start.d.ts +6 -3
- package/dist/individual-start.js +14 -5
- package/dist/node-runtime-client.d.ts +6 -2
- package/dist/node-runtime-client.js +6 -2
- package/dist/resource-operations.d.ts +14 -7
- package/dist/resource-operations.js +9 -3
- package/dist/server-profile-session.d.ts +12 -5
- package/dist/server-profile-session.js +7 -4
- package/dist/session.d.ts +6 -4
- package/dist/session.js +3 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -437,6 +437,12 @@ grant/deny operation and retains the original Communication identifier/thread.
|
|
|
437
437
|
and `GatewayActiveConsentProvider` supplies `evaluateRequestedAccess(...)` from
|
|
438
438
|
the GW Consent source of truth rather than a parallel application table.
|
|
439
439
|
There is no `AccessRequest` FHIR resource or `AccessRequest.*` claim family.
|
|
440
|
+
The Communication itself uses the standard FHIR `notification` category;
|
|
441
|
+
`permission-request` is workflow meaning carried by the attached draft Consent,
|
|
442
|
+
not a custom category. See the
|
|
443
|
+
[HL7 category value set](https://www.hl7.org/fhir/valueset-communication-category.html),
|
|
444
|
+
[HL7 `v3-ActReason` BTG code system](http://terminology.hl7.org/CodeSystem/v3-ActReason),
|
|
445
|
+
and the [IHE compound normal/break-glass Consent example](https://profiles.ihe.net/ITI/PCF/Consent-ex-consent-advanced-normal-break-glass-restricted.json.html).
|
|
440
446
|
|
|
441
447
|
## Main Flows
|
|
442
448
|
|
|
@@ -497,6 +503,29 @@ Those belong to:
|
|
|
497
503
|
|
|
498
504
|
## Minimal Examples
|
|
499
505
|
|
|
506
|
+
### Build the individual-controller DCR actor DID
|
|
507
|
+
|
|
508
|
+
The controller consumes the licensed member seat with role `RESPRSN`. A phone
|
|
509
|
+
or email stored on the Individual Organization remains contact data and does
|
|
510
|
+
not consume another seat. The role keeps its full type and value in protected
|
|
511
|
+
data; only the value is appended to the DID.
|
|
512
|
+
|
|
513
|
+
```ts
|
|
514
|
+
import { buildIndividualMemberDidWebFromPrivateIdentifiers } from 'gdc-sdk-node-ts';
|
|
515
|
+
|
|
516
|
+
const individualControllerDid = buildIndividualMemberDidWebFromPrivateIdentifiers({
|
|
517
|
+
providerDidWeb: 'did:web:host.example.org:health-care:organization:taxid:VATES-B00112233',
|
|
518
|
+
secureIdTypeIndividual: 'UUID',
|
|
519
|
+
privateIdValueIndividual: 'a87e5b15-aea4-4475-9c7c-40aa88354b6f',
|
|
520
|
+
secureIdTypeMember: 'EMAIL',
|
|
521
|
+
privateIdValueMember: 'controller@example.org',
|
|
522
|
+
roleType: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode',
|
|
523
|
+
roleValue: 'RESPRSN',
|
|
524
|
+
});
|
|
525
|
+
|
|
526
|
+
// did:web:host.example.org:health-care:organization:taxid:VATES-B00112233:individual:UUID:zG9H82pae9SCXvec3D4YKqhX8bj8F1mRgzxMEdwXXonT7BWsvsUiP2u52sWQTeESpoMee:member:zG9DrMLpQW8eoCc9Ay9AFxuMGiswgJePpbUMz9svJCZ8tKjUd4xoExgCPA5jmHc6hPATJ:RESPRSN
|
|
527
|
+
```
|
|
528
|
+
|
|
500
529
|
### Use shared invitation contract from Node
|
|
501
530
|
|
|
502
531
|
```ts
|
|
@@ -699,20 +728,26 @@ modules below.
|
|
|
699
728
|
- draft/outbox helpers
|
|
700
729
|
- document facade helpers
|
|
701
730
|
- `cloneImportedClinicalDocumentForDemo(...)` for an explicit editable demo
|
|
702
|
-
copy
|
|
703
|
-
|
|
704
|
-
`recipient`, never a
|
|
731
|
+
copy whose stable FHIR author/attester come from the protected
|
|
732
|
+
`clinicalCreator` export; direct summary updates use profile `actorDid` only
|
|
733
|
+
as `sender` and the real hosted provider-tenant DID as `recipient`, never a
|
|
734
|
+
portal alias
|
|
705
735
|
- vital-sign helpers
|
|
706
736
|
|
|
707
737
|
### Composition provenance in clinical Bundles
|
|
708
738
|
|
|
709
|
-
A document Bundle keeps `Composition.author` (
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
739
|
+
A document Bundle keeps `Composition.author` (the organization, EHR/patient
|
|
740
|
+
portal or individual that supplies the document) separate from
|
|
741
|
+
`Composition.attester` (the registered personal or professional assignment
|
|
742
|
+
that attested its content). A `RelatedPerson` or `PractitionerRole` is an
|
|
743
|
+
attester, never a shortcut for replacing the source author. The protected BFF
|
|
744
|
+
profile resolves both from its registered binding. DIDComm sender and signing
|
|
745
|
+
keys remain audit/transport identities.
|
|
746
|
+
The BFF never configures ledger routing or supplies channel/smart-contract
|
|
747
|
+
names. GW owns that decision and returns one transaction receipt with
|
|
748
|
+
per-resource CID/version evidence for a successful clinical Bundle.
|
|
749
|
+
See [Clinical writes from a Node BFF](./docs/101-BFF_CLINICAL_WRITES.md),
|
|
750
|
+
[multi-actor IPS export](./docs/101-MULTI_ACTOR_IPS_EXPORT.md), and the
|
|
716
751
|
[gateway authorship contract](https://github.com/Global-DataCare/gwtemplate-node-ts/blob/main/docs/01-OVERVIEW-AND-GUIDES/101-01.N-AUTHENTICATED-CLINICAL-AUTHOR.md).
|
|
717
752
|
|
|
718
753
|
### Node runtime client
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { SecureIdTypesIndividual } from 'gdc-common-utils-ts';
|
|
2
|
+
export { buildIndividualMemberDidWebFromPrivateIdentifiers } from 'gdc-common-utils-ts';
|
|
1
3
|
import type { FamilyRegistrationStatus } from 'gdc-common-utils-ts/utils/family-organization-summary';
|
|
2
4
|
import type { PollOptions, SubmitAndPollResult } from './orchestration/client-port.js';
|
|
3
5
|
import type { RouteContext } from './individual-onboarding.js';
|
|
@@ -77,8 +79,10 @@ export type IndividualOrganizationStartResult = {
|
|
|
77
79
|
export type IndividualOrganizationBootstrapIdentity = {
|
|
78
80
|
/** Technical UUID returned as `Bundle.data[0].resource.id`. */
|
|
79
81
|
resourceId: string;
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
+
/** Explicit governed identifier type serialized in the hosted DID path. */
|
|
83
|
+
secureIdTypeIndividual: typeof SecureIdTypesIndividual.Uuid;
|
|
84
|
+
/** SHA3-384 multihash of the UUID's canonical 16 bytes, as base58btc multibase. */
|
|
85
|
+
secureIdValueIndividual: string;
|
|
82
86
|
/** Authoritative provider DID returned by GW in `Offer.offeredBy`. */
|
|
83
87
|
providerDidWeb: string;
|
|
84
88
|
/** Canonical child DID built beneath the exact provider DID returned by GW. */
|
|
@@ -108,4 +112,3 @@ export declare function startIndividualOrganizationWithDeps(deps: StartIndividua
|
|
|
108
112
|
* individual suffix and never rewrites that provider lineage.
|
|
109
113
|
*/
|
|
110
114
|
export declare function readIndividualOrganizationBootstrapIdentity(responseBody: unknown): IndividualOrganizationBootstrapIdentity | undefined;
|
|
111
|
-
export {};
|
package/dist/individual-start.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
|
|
2
2
|
import { ClaimsOfferSchemaorg, ClaimsOrganizationSchemaorg, ClaimsPersonSchemaorg, ClaimsServiceSchemaorg, } from 'gdc-common-utils-ts/constants';
|
|
3
|
-
import { buildIndividualDidWeb,
|
|
3
|
+
import { buildIndividualDidWeb, buildSecureIdValueIndividual, extractPrimaryClaims, readFamilyOrganizationSummaryFromResponseBody, SecureIdTypesIndividual, } from 'gdc-common-utils-ts';
|
|
4
|
+
export { buildIndividualMemberDidWebFromPrivateIdentifiers } from 'gdc-common-utils-ts';
|
|
4
5
|
import { GwCoreLifecycleRequestType } from './constants/lifecycle.js';
|
|
5
6
|
import { resolvePollOptionsFromSeconds } from './poll-options.js';
|
|
6
7
|
export async function startIndividualOrganizationWithDeps(deps) {
|
|
@@ -106,18 +107,26 @@ export function readIndividualOrganizationBootstrapIdentity(responseBody) {
|
|
|
106
107
|
const providerDidWeb = String(claims[ClaimsOfferSchemaorg.offeredBy] || '').trim();
|
|
107
108
|
if (!resourceId || !providerDidWeb)
|
|
108
109
|
return undefined;
|
|
109
|
-
let
|
|
110
|
+
let secureIdValueIndividual;
|
|
110
111
|
try {
|
|
111
|
-
|
|
112
|
+
secureIdValueIndividual = buildSecureIdValueIndividual({
|
|
113
|
+
secureIdTypeIndividual: SecureIdTypesIndividual.Uuid,
|
|
114
|
+
privateIdValueIndividual: resourceId,
|
|
115
|
+
});
|
|
112
116
|
}
|
|
113
117
|
catch {
|
|
114
118
|
return undefined;
|
|
115
119
|
}
|
|
116
120
|
return {
|
|
117
121
|
resourceId,
|
|
118
|
-
|
|
122
|
+
secureIdTypeIndividual: SecureIdTypesIndividual.Uuid,
|
|
123
|
+
secureIdValueIndividual,
|
|
119
124
|
providerDidWeb,
|
|
120
|
-
subjectDid: buildIndividualDidWeb({
|
|
125
|
+
subjectDid: buildIndividualDidWeb({
|
|
126
|
+
providerDidWeb,
|
|
127
|
+
secureIdTypeIndividual: SecureIdTypesIndividual.Uuid,
|
|
128
|
+
secureIdValueIndividual,
|
|
129
|
+
}),
|
|
121
130
|
};
|
|
122
131
|
}
|
|
123
132
|
function asRecord(value) {
|
|
@@ -515,7 +515,9 @@ export declare class HttpRuntimeClient implements NodeRuntimeClient {
|
|
|
515
515
|
* The attached payload must be a `Bundle.type=batch|collection`, and the
|
|
516
516
|
* exact section is carried on the outer Communication. This flow is suitable
|
|
517
517
|
* for vital-sign or other explicitly section-scoped updates; it does not
|
|
518
|
-
* replace a multi-section IPS document.
|
|
518
|
+
* replace a multi-section IPS document. The terminal result may include one
|
|
519
|
+
* transaction receipt with per-resource CID/version evidence. Callers never
|
|
520
|
+
* supply or configure ledger channel or smart-contract names.
|
|
519
521
|
*/
|
|
520
522
|
updateClinicalSection(ctx: RouteContext, input: ClinicalSectionUpdateInput): Promise<SubmitAndPollResult>;
|
|
521
523
|
/**
|
|
@@ -525,7 +527,9 @@ export declare class HttpRuntimeClient implements NodeRuntimeClient {
|
|
|
525
527
|
* `entry[0]`; its `section[].entry[]` references delimit the updated data.
|
|
526
528
|
* Direct callers pass the authenticated profile `actorDid` as `sender` and
|
|
527
529
|
* the real hosted provider-tenant DID as `recipient`. A stable multibase URN
|
|
528
|
-
* or portal DID/alias is never the authenticated clinical actor.
|
|
530
|
+
* or portal DID/alias is never the authenticated clinical actor. GW owns all
|
|
531
|
+
* ledger routing; callers receive evidence but never select a channel or
|
|
532
|
+
* smart contract.
|
|
529
533
|
*/
|
|
530
534
|
updateClinicalSummary(ctx: RouteContext, input: ClinicalSummaryUpdateInput): Promise<SubmitAndPollResult>;
|
|
531
535
|
/**
|
|
@@ -1010,7 +1010,9 @@ export class HttpRuntimeClient {
|
|
|
1010
1010
|
* The attached payload must be a `Bundle.type=batch|collection`, and the
|
|
1011
1011
|
* exact section is carried on the outer Communication. This flow is suitable
|
|
1012
1012
|
* for vital-sign or other explicitly section-scoped updates; it does not
|
|
1013
|
-
* replace a multi-section IPS document.
|
|
1013
|
+
* replace a multi-section IPS document. The terminal result may include one
|
|
1014
|
+
* transaction receipt with per-resource CID/version evidence. Callers never
|
|
1015
|
+
* supply or configure ledger channel or smart-contract names.
|
|
1014
1016
|
*/
|
|
1015
1017
|
async updateClinicalSection(ctx, input) {
|
|
1016
1018
|
return this.ingestCommunicationAndUpdateIndex(ctx, buildClinicalSectionUpdateIngestion(input));
|
|
@@ -1022,7 +1024,9 @@ export class HttpRuntimeClient {
|
|
|
1022
1024
|
* `entry[0]`; its `section[].entry[]` references delimit the updated data.
|
|
1023
1025
|
* Direct callers pass the authenticated profile `actorDid` as `sender` and
|
|
1024
1026
|
* the real hosted provider-tenant DID as `recipient`. A stable multibase URN
|
|
1025
|
-
* or portal DID/alias is never the authenticated clinical actor.
|
|
1027
|
+
* or portal DID/alias is never the authenticated clinical actor. GW owns all
|
|
1028
|
+
* ledger routing; callers receive evidence but never select a channel or
|
|
1029
|
+
* smart contract.
|
|
1026
1030
|
*/
|
|
1027
1031
|
async updateClinicalSummary(ctx, input) {
|
|
1028
1032
|
return this.ingestCommunicationAndUpdateIndex(ctx, buildClinicalSummaryUpdateIngestion(input));
|
|
@@ -307,11 +307,12 @@ type ClinicalUpdateRuntimeOptions = Readonly<{
|
|
|
307
307
|
* Updates exactly one clinical section through a scoped batch/collection.
|
|
308
308
|
* A `Bundle.type = batch` may mix typed create, update, and delete entries.
|
|
309
309
|
* A delete targets `ResourceType/id`, carries no resource body, and may use
|
|
310
|
-
* `ifMatch` for optimistic concurrency. GW authorizes it against the
|
|
311
|
-
*
|
|
312
|
-
* are never written into the clinical resource.
|
|
310
|
+
* `ifMatch` for optimistic concurrency. GW authorizes it against the stored
|
|
311
|
+
* attester assignment plus the caller's registered clinical creator binding;
|
|
312
|
+
* contact identifiers are never written into the clinical resource.
|
|
313
313
|
* An externally authored `urn:*` may be preserved on first import, but a local
|
|
314
|
-
*
|
|
314
|
+
* local actor cannot subsequently update or delete that source-authored fact
|
|
315
|
+
* unless an explicit successor policy applies.
|
|
315
316
|
*/
|
|
316
317
|
export type ClinicalSectionUpdateInput = ClinicalSectionUpdateCommunicationInput & ClinicalUpdateRuntimeOptions;
|
|
317
318
|
/**
|
|
@@ -319,8 +320,9 @@ export type ClinicalSectionUpdateInput = ClinicalSectionUpdateCommunicationInput
|
|
|
319
320
|
*
|
|
320
321
|
* For the direct call, `sender` is the authenticated profile's operational
|
|
321
322
|
* `actorDid`, and `recipient` is the real provider-tenant DID inside the host
|
|
322
|
-
* that accommodates it. Neither value is a portal alias.
|
|
323
|
-
*
|
|
323
|
+
* that accommodates it. Neither value is a portal alias. An editable demo
|
|
324
|
+
* clone obtains its stable FHIR author/attester from the protected
|
|
325
|
+
* `clinicalCreator` export, never from that `actorDid`.
|
|
324
326
|
*/
|
|
325
327
|
export type ClinicalSummaryUpdateInput = ClinicalUpdateCommunicationInput & ClinicalUpdateRuntimeOptions;
|
|
326
328
|
export declare function buildClinicalSectionUpdateIngestion(input: ClinicalSectionUpdateInput): CommunicationIngestionInput;
|
|
@@ -407,7 +409,12 @@ export type CommunicationParticipantRuntimeSearchInput = {
|
|
|
407
409
|
};
|
|
408
410
|
/** Subject/requester filters for canonical permission-request Communications. */
|
|
409
411
|
export type ProfessionalAccessRequestSearchInput = CommunicationParticipantRuntimeSearchInput;
|
|
410
|
-
/**
|
|
412
|
+
/**
|
|
413
|
+
* Restricts a Communication participant search to standard notifications.
|
|
414
|
+
* A permission request is identified by its attached draft Consent contract;
|
|
415
|
+
* it is not an invented fifth FHIR category. See
|
|
416
|
+
* https://www.hl7.org/fhir/valueset-communication-category.html
|
|
417
|
+
*/
|
|
411
418
|
export declare function buildProfessionalAccessRequestSearchInput(input: ProfessionalAccessRequestSearchInput): CommunicationParticipantRuntimeSearchInput;
|
|
412
419
|
export type ClinicalDateRange = DateRange;
|
|
413
420
|
export type ClinicalBundleSearchInput = Omit<BundleSearchQuery, 'section' | 'searchParams'> & {
|
|
@@ -6,6 +6,7 @@ import { CommunicationClaim } from 'gdc-common-utils-ts/models/interoperable-cla
|
|
|
6
6
|
import { BundleEditor, buildCommunicationParticipantSearchBundle, buildBlockchainArtifactDocumentReference, BundleQuery, createInteroperableResourceOperationEditor, IndividualOrganizationLifecycleEditor, LicenseOfferSearchEditor, LicenseOrderSearchEditor, InteroperableLifecycleStatuses, LicenseListSearchEditor, buildLicenseIssueEntry, buildLicensePurchaseEntry, } from 'gdc-common-utils-ts';
|
|
7
7
|
import { EmployeeBundleOperations, EmployeeResourceTypes, } from 'gdc-common-utils-ts/utils/employee';
|
|
8
8
|
import { DeviceAppTypes, DeviceUserClasses } from 'gdc-common-utils-ts/constants/device';
|
|
9
|
+
import { CommunicationCategoryCodes } from 'gdc-common-utils-ts/constants/communication';
|
|
9
10
|
import { addFhirResourceToCommunication, createCommunicationResource, buildClinicalSummaryCommunicationJob, buildPermissionRequestCommunication, createClinicalSectionUpdateOutboxJob, createClinicalSummaryUpdateOutboxJob, readClinicalSummaryOperationResult, TransportProfiles, } from 'gdc-sdk-core-ts';
|
|
10
11
|
import { GwCoreLifecycleRequestMethod, GwCoreLifecycleRequestType, GwCoreLifecycleTodo, } from './constants/lifecycle.js';
|
|
11
12
|
import { buildEmployeeSearchBundle, ConsentClaims, } from 'gdc-sdk-core-ts';
|
|
@@ -27,13 +28,18 @@ export function buildClinicalSummaryUpdateIngestion(input) {
|
|
|
27
28
|
pollOptions: input.pollOptions,
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Restricts a Communication participant search to standard notifications.
|
|
33
|
+
* A permission request is identified by its attached draft Consent contract;
|
|
34
|
+
* it is not an invented fifth FHIR category. See
|
|
35
|
+
* https://www.hl7.org/fhir/valueset-communication-category.html
|
|
36
|
+
*/
|
|
31
37
|
export function buildProfessionalAccessRequestSearchInput(input) {
|
|
32
38
|
return {
|
|
33
39
|
...input,
|
|
34
40
|
searchParams: {
|
|
35
41
|
...input.searchParams,
|
|
36
|
-
[CommunicationClaim.Category]:
|
|
42
|
+
[CommunicationClaim.Category]: CommunicationCategoryCodes.Notification.attributeValue,
|
|
37
43
|
},
|
|
38
44
|
};
|
|
39
45
|
}
|
|
@@ -520,7 +526,7 @@ export async function requestProfessionalAccessWithDeps(routeCtx, input, deps) {
|
|
|
520
526
|
});
|
|
521
527
|
const communicationClaims = {
|
|
522
528
|
...communication.claims,
|
|
523
|
-
[CommunicationClaim.Category]:
|
|
529
|
+
[CommunicationClaim.Category]: CommunicationCategoryCodes.Notification.attributeValue,
|
|
524
530
|
[CommunicationClaim.NoteText]: communication.text,
|
|
525
531
|
};
|
|
526
532
|
const persistedCommunication = { ...communication, claims: communicationClaims };
|
|
@@ -343,7 +343,11 @@ export declare class ServerProfileSessionManager {
|
|
|
343
343
|
exportClinicalCreatorIps(input: Readonly<{
|
|
344
344
|
ownerId: string;
|
|
345
345
|
profileId: string;
|
|
346
|
-
/**
|
|
346
|
+
/**
|
|
347
|
+
* Deprecated compatibility choice. The high-level clone/section helpers
|
|
348
|
+
* derive the final professional or individual-member author boundary
|
|
349
|
+
* from the returned protected binding.
|
|
350
|
+
*/
|
|
347
351
|
sourceAuthor?: ClinicalSourceAuthorSelection;
|
|
348
352
|
}>): Promise<ClinicalCreatorIpsExport>;
|
|
349
353
|
enroll(input: ServerProfileEnrollmentInput): Promise<ServerProfileRecord>;
|
|
@@ -437,10 +441,13 @@ export declare class ServerProfileSessionManager {
|
|
|
437
441
|
private now;
|
|
438
442
|
}
|
|
439
443
|
/**
|
|
440
|
-
* Exports the stable FHIR IPS
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
+
* Exports the stable FHIR IPS source author and attester attached to a server
|
|
445
|
+
* profile. The returned protected binding lets high-level helpers use the
|
|
446
|
+
* stable legal organization URN plus PractitionerRole for professionals, or
|
|
447
|
+
* one RelatedPerson urn:uuid as both author and attester for individual
|
|
448
|
+
* members/controllers. The optional selection remains only for backwards
|
|
449
|
+
* compatibility. DIDComm sender and signing keys remain transport/audit
|
|
450
|
+
* evidence and never become FHIR provenance.
|
|
444
451
|
*/
|
|
445
452
|
export declare function exportServerProfileClinicalCreatorIps(profile: ServerProfileRecord, options?: Readonly<{
|
|
446
453
|
sourceAuthor?: ClinicalSourceAuthorSelection;
|
|
@@ -829,10 +829,13 @@ function requireBase64UrlSeed32(seed) {
|
|
|
829
829
|
}
|
|
830
830
|
}
|
|
831
831
|
/**
|
|
832
|
-
* Exports the stable FHIR IPS
|
|
833
|
-
*
|
|
834
|
-
*
|
|
835
|
-
*
|
|
832
|
+
* Exports the stable FHIR IPS source author and attester attached to a server
|
|
833
|
+
* profile. The returned protected binding lets high-level helpers use the
|
|
834
|
+
* stable legal organization URN plus PractitionerRole for professionals, or
|
|
835
|
+
* one RelatedPerson urn:uuid as both author and attester for individual
|
|
836
|
+
* members/controllers. The optional selection remains only for backwards
|
|
837
|
+
* compatibility. DIDComm sender and signing keys remain transport/audit
|
|
838
|
+
* evidence and never become FHIR provenance.
|
|
836
839
|
*/
|
|
837
840
|
export function exportServerProfileClinicalCreatorIps(profile, options = {}) {
|
|
838
841
|
if (!profile.clinicalCreatorBinding) {
|
package/dist/session.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { OrganizationEmployeeSdk } from './orchestration/organization-employee-s
|
|
|
8
8
|
import { ProfessionalSdk } from './orchestration/professional-sdk.js';
|
|
9
9
|
import { DigitalTwinSdk } from './orchestration/digital-twin-sdk.js';
|
|
10
10
|
import type { RuntimeClient } from './orchestration/client-port.js';
|
|
11
|
-
import { type DemoClinicalDocumentResourceIdContext } from 'gdc-sdk-core-ts';
|
|
11
|
+
import { type ClinicalCreatorIpsExport, type DemoClinicalDocumentResourceIdContext } from 'gdc-sdk-core-ts';
|
|
12
12
|
export type NodeCapability = Capability;
|
|
13
13
|
export type NodeActorSessionContext = {
|
|
14
14
|
actorKind: ActorKind;
|
|
@@ -24,6 +24,8 @@ export type NodeActorSessionContext = {
|
|
|
24
24
|
*/
|
|
25
25
|
export type ActorSessionContext = NodeActorSessionContext;
|
|
26
26
|
export type DemoClinicalDocumentCloneOptions = Readonly<{
|
|
27
|
+
/** Protected profile projection; supplies stable FHIR author and attester. */
|
|
28
|
+
clinicalCreator?: ClinicalCreatorIpsExport;
|
|
27
29
|
createResourceId?: (context: DemoClinicalDocumentResourceIdContext) => string;
|
|
28
30
|
}>;
|
|
29
31
|
/**
|
|
@@ -56,9 +58,9 @@ export declare class ActorSession {
|
|
|
56
58
|
/** Materializes the digital-twin facade for an organization employee or professional actor. */
|
|
57
59
|
asDigitalTwin(): DigitalTwinSdk;
|
|
58
60
|
/**
|
|
59
|
-
* Creates an editable demo copy whose
|
|
60
|
-
*
|
|
61
|
-
*
|
|
61
|
+
* Creates an editable demo copy whose stable FHIR author/attester come from
|
|
62
|
+
* `options.clinicalCreator`. This session's operational `actorDid` remains a
|
|
63
|
+
* compatibility fallback and belongs in the later write's sender field.
|
|
62
64
|
*/
|
|
63
65
|
cloneImportedClinicalDocumentForDemo(bundle: Record<string, unknown>, options?: DemoClinicalDocumentCloneOptions): Record<string, any>;
|
|
64
66
|
private requireClient;
|
package/dist/session.js
CHANGED
|
@@ -71,9 +71,9 @@ export class ActorSession {
|
|
|
71
71
|
return new DigitalTwinSdk(this.requireClient(), this.actorDid);
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* Creates an editable demo copy whose
|
|
75
|
-
*
|
|
76
|
-
*
|
|
74
|
+
* Creates an editable demo copy whose stable FHIR author/attester come from
|
|
75
|
+
* `options.clinicalCreator`. This session's operational `actorDid` remains a
|
|
76
|
+
* compatibility fallback and belongs in the later write's sender field.
|
|
77
77
|
*/
|
|
78
78
|
cloneImportedClinicalDocumentForDemo(bundle, options = {}) {
|
|
79
79
|
const actorDid = String(this.actorDid || '').trim();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gdc-sdk-node-ts",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Next-generation Node runtime package for the GDC SDK family",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Antifraud Services Inc.",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"test:e2e:live-gw:clean": "bash ./scripts/run-live-gw-clean.sh"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"gdc-common-utils-ts": "2.
|
|
42
|
-
"gdc-sdk-core-ts": "2.
|
|
41
|
+
"gdc-common-utils-ts": "2.9.3",
|
|
42
|
+
"gdc-sdk-core-ts": "2.9.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^20.14.10",
|