@icanbwell/bwell-sdk-ts 1.51.0 → 1.52.0-rc.1765552726

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 (37) hide show
  1. package/dist/__version__.d.ts +1 -1
  2. package/dist/__version__.js +1 -1
  3. package/dist/api/base/health-space/add-care-team-member-request.d.ts +33 -0
  4. package/dist/api/base/health-space/add-care-team-member-request.js +36 -0
  5. package/dist/api/base/health-space/add-care-team-members-request.d.ts +35 -0
  6. package/dist/api/base/health-space/add-care-team-members-request.js +61 -0
  7. package/dist/api/base/health-space/health-space-manager.d.ts +86 -1
  8. package/dist/api/base/health-space/index.d.ts +4 -0
  9. package/dist/api/base/health-space/index.js +4 -0
  10. package/dist/api/base/health-space/remove-care-team-member-request.d.ts +34 -0
  11. package/dist/api/base/health-space/remove-care-team-member-request.js +36 -0
  12. package/dist/api/base/health-space/update-care-team-member-request.d.ts +55 -0
  13. package/dist/api/base/health-space/update-care-team-member-request.js +71 -0
  14. package/dist/api/graphql-api/health-space/add-care-team-member-request-factory.d.ts +20 -0
  15. package/dist/api/graphql-api/health-space/add-care-team-member-request-factory.js +29 -0
  16. package/dist/api/graphql-api/health-space/add-care-team-members-request-factory.d.ts +16 -0
  17. package/dist/api/graphql-api/health-space/add-care-team-members-request-factory.js +23 -0
  18. package/dist/api/graphql-api/health-space/care-team-factory-utils.d.ts +23 -0
  19. package/dist/api/graphql-api/health-space/care-team-factory-utils.js +30 -0
  20. package/dist/api/graphql-api/health-space/graphql-health-space-manager.d.ts +58 -1
  21. package/dist/api/graphql-api/health-space/graphql-health-space-manager.js +131 -2
  22. package/dist/api/graphql-api/health-space/index.d.ts +4 -0
  23. package/dist/api/graphql-api/health-space/index.js +4 -0
  24. package/dist/api/graphql-api/health-space/remove-care-team-member-request-factory.d.ts +16 -0
  25. package/dist/api/graphql-api/health-space/remove-care-team-member-request-factory.js +24 -0
  26. package/dist/api/graphql-api/health-space/update-care-team-member-request-factory.d.ts +16 -0
  27. package/dist/api/graphql-api/health-space/update-care-team-member-request-factory.js +20 -0
  28. package/dist/graphql/operations/index.d.ts +36 -4
  29. package/dist/graphql/operations/index.js +77 -1
  30. package/dist/graphql/operations/types.d.ts +168 -17
  31. package/dist/graphql/schema.d.ts +43 -2
  32. package/dist/graphql/schema.js +29 -0
  33. package/dist/utils/date-utils.d.ts +6 -0
  34. package/dist/utils/date-utils.js +8 -0
  35. package/dist/utils/index.d.ts +1 -0
  36. package/dist/utils/index.js +1 -0
  37. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * This file is automatically generated. Please do not edit this file directly.
3
3
  */
4
- export declare const VERSION = "1.51.0";
4
+ export declare const VERSION = "1.52.0-rc.1765552726";
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * This file is automatically generated. Please do not edit this file directly.
3
3
  */
4
- export const VERSION = "1.51.0";
4
+ export const VERSION = "1.52.0-rc.1765552726";
@@ -0,0 +1,33 @@
1
+ import { ErrorsCollector, ValidationRequest } from "../../../requests/index.js";
2
+ import { UpdateCareTeamMemberInput } from "./update-care-team-member-request.js";
3
+ /**
4
+ * Input type for adding a single care team member.
5
+ */
6
+ export type AddCareTeamMemberInput = UpdateCareTeamMemberInput;
7
+ /**
8
+ * Validator class for adding a single care team member.
9
+ * This class reuses the UpdateCareTeamMemberRequestValidator validation logic with required roles.
10
+ */
11
+ declare class AddCareTeamMemberRequestValidator {
12
+ private updateValidator;
13
+ /**
14
+ * Validates the provided `AddCareTeamMemberInput` data with roles required.
15
+ *
16
+ * @param data - The input data to validate, containing member details to add.
17
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
18
+ */
19
+ validate(data: AddCareTeamMemberInput, errors: ErrorsCollector): void;
20
+ }
21
+ /**
22
+ * Represents a request for adding a single care team member.
23
+ * This class reuses the validation logic from UpdateCareTeamMemberRequest.
24
+ *
25
+ * @extends ValidationRequest<AddCareTeamMemberInput>
26
+ * @category Requests
27
+ * @title AddCareTeamMemberRequest
28
+ * @excerpt Request class for adding a single care team member
29
+ */
30
+ export declare class AddCareTeamMemberRequest extends ValidationRequest<AddCareTeamMemberInput> {
31
+ protected validator: AddCareTeamMemberRequestValidator;
32
+ }
33
+ export {};
@@ -0,0 +1,36 @@
1
+ import { ValidationRequest } from "../../../requests/index.js";
2
+ import { UpdateCareTeamMemberRequestValidator, } from "./update-care-team-member-request.js";
3
+ /**
4
+ * Validator class for adding a single care team member.
5
+ * This class reuses the UpdateCareTeamMemberRequestValidator validation logic with required roles.
6
+ */
7
+ class AddCareTeamMemberRequestValidator {
8
+ constructor() {
9
+ this.updateValidator = new UpdateCareTeamMemberRequestValidator();
10
+ }
11
+ /**
12
+ * Validates the provided `AddCareTeamMemberInput` data with roles required.
13
+ *
14
+ * @param data - The input data to validate, containing member details to add.
15
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
16
+ */
17
+ validate(data, errors) {
18
+ // For add operations, role is required
19
+ this.updateValidator.validate(data, errors, { requireRole: true });
20
+ }
21
+ }
22
+ /**
23
+ * Represents a request for adding a single care team member.
24
+ * This class reuses the validation logic from UpdateCareTeamMemberRequest.
25
+ *
26
+ * @extends ValidationRequest<AddCareTeamMemberInput>
27
+ * @category Requests
28
+ * @title AddCareTeamMemberRequest
29
+ * @excerpt Request class for adding a single care team member
30
+ */
31
+ export class AddCareTeamMemberRequest extends ValidationRequest {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.validator = new AddCareTeamMemberRequestValidator();
35
+ }
36
+ }
@@ -0,0 +1,35 @@
1
+ import { ErrorsCollector, ValidationRequest } from "../../../requests/index.js";
2
+ import { AddCareTeamMemberInput } from "./add-care-team-member-request.js";
3
+ /**
4
+ * Input type for adding multiple care team members.
5
+ */
6
+ export type AddCareTeamMembersInput = {
7
+ /** Array of care team members to add */
8
+ members: AddCareTeamMemberInput[];
9
+ };
10
+ /**
11
+ * Validator class for adding multiple care team members.
12
+ * This class reuses the UpdateCareTeamMemberRequestValidator for each member.
13
+ */
14
+ declare class AddCareTeamMembersRequestValidator {
15
+ private updateValidator;
16
+ /**
17
+ * Validates the provided `AddCareTeamMembersInput` data by validating each member individually.
18
+ *
19
+ * @param data - The input data to validate, containing an array of members to add.
20
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
21
+ */
22
+ validate(data: AddCareTeamMembersInput, errors: ErrorsCollector): void;
23
+ }
24
+ /**
25
+ * Represents a request for adding multiple care team members.
26
+ *
27
+ * @extends ValidationRequest<AddCareTeamMembersInput>
28
+ * @category Requests
29
+ * @title AddCareTeamMembersRequest
30
+ * @excerpt Request class for adding multiple care team members
31
+ */
32
+ export declare class AddCareTeamMembersRequest extends ValidationRequest<AddCareTeamMembersInput> {
33
+ protected validator: AddCareTeamMembersRequestValidator;
34
+ }
35
+ export {};
@@ -0,0 +1,61 @@
1
+ import { ValidationErrorsCollector, ValidationRequest, } from "../../../requests/index.js";
2
+ import { isNotNullOrUndefined } from "../../../utils/type-utils.js";
3
+ import { UpdateCareTeamMemberRequestValidator } from "./update-care-team-member-request.js";
4
+ /**
5
+ * Validator class for adding multiple care team members.
6
+ * This class reuses the UpdateCareTeamMemberRequestValidator for each member.
7
+ */
8
+ class AddCareTeamMembersRequestValidator {
9
+ constructor() {
10
+ this.updateValidator = new UpdateCareTeamMemberRequestValidator();
11
+ }
12
+ /**
13
+ * Validates the provided `AddCareTeamMembersInput` data by validating each member individually.
14
+ *
15
+ * @param data - The input data to validate, containing an array of members to add.
16
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
17
+ */
18
+ validate(data, errors) {
19
+ // Validate members array is provided
20
+ if (!isNotNullOrUndefined(data.members)) {
21
+ errors.add("Members array is required");
22
+ return;
23
+ }
24
+ if (data.members.length === 0) {
25
+ errors.add("Members array cannot be empty");
26
+ return;
27
+ }
28
+ // Validate each member using the update validator
29
+ for (let memberIndex = 0; memberIndex < data.members.length; memberIndex++) {
30
+ const member = data.members[memberIndex];
31
+ if (!isNotNullOrUndefined(member)) {
32
+ errors.add(`Member ${memberIndex}: Cannot be null or undefined`);
33
+ continue;
34
+ }
35
+ // Create a sub-errors collector to prefix errors with member index
36
+ const memberErrors = new ValidationErrorsCollector();
37
+ // For add operations, each member must include a role
38
+ this.updateValidator.validate(member, memberErrors, {
39
+ requireRole: true,
40
+ });
41
+ // Add member-specific errors with prefix
42
+ for (const errorMessage of memberErrors.errors()) {
43
+ errors.add(`Member ${memberIndex}: ${errorMessage}`);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ /**
49
+ * Represents a request for adding multiple care team members.
50
+ *
51
+ * @extends ValidationRequest<AddCareTeamMembersInput>
52
+ * @category Requests
53
+ * @title AddCareTeamMembersRequest
54
+ * @excerpt Request class for adding multiple care team members
55
+ */
56
+ export class AddCareTeamMembersRequest extends ValidationRequest {
57
+ constructor() {
58
+ super(...arguments);
59
+ this.validator = new AddCareTeamMembersRequestValidator();
60
+ }
61
+ }
@@ -1,9 +1,13 @@
1
- import { AppointmentsQueryResults, CancelAppointmentMutationResults, CancelationReasonsQueryResults } from "../../../graphql/operations/types.js";
1
+ import { AddCareTeamMemberMutationResults, AddCareTeamMembersMutationResults, AppointmentsQueryResults, CancelAppointmentMutationResults, CancelationReasonsQueryResults, RemoveCareTeamMemberMutationResults, UpdateCareTeamMemberMutationResults } from "../../../graphql/operations/types.js";
2
2
  import { BWellQueryResult, BWellTransactionResult } from "../../../results/index.js";
3
3
  import { BaseManagerError } from "../errors.js";
4
+ import { AddCareTeamMemberRequest } from "./add-care-team-member-request.js";
5
+ import { AddCareTeamMembersRequest } from "./add-care-team-members-request.js";
4
6
  import { AppointmentsRequest } from "./appointments-request.js";
5
7
  import { CancelAppointmentRequest } from "./cancel-appointment-request.js";
6
8
  import { CancelationReasonsRequest } from "./cancelationReasons-request.js";
9
+ import { RemoveCareTeamMemberRequest } from "./remove-care-team-member-request.js";
10
+ import { UpdateCareTeamMemberRequest } from "./update-care-team-member-request.js";
7
11
  export type AppointmentsResults = AppointmentsQueryResults["appointments"];
8
12
  export type CancelAppointmentResults = CancelAppointmentMutationResults["updateAppointment"];
9
13
  export type CancelationReasonsResults = CancelationReasonsQueryResults["cancelationReasons"];
@@ -35,4 +39,85 @@ export interface HealthSpaceManager {
35
39
  * or an error of type `BaseManagerError`.
36
40
  */
37
41
  getCancelationReasons(request: CancelationReasonsRequest): Promise<BWellQueryResult<CancelationReasonsResults, BaseManagerError>>;
42
+ /**
43
+ * Adds a single care team member to a care team.
44
+ *
45
+ * @param request - AddCareTeamMemberRequest with id, type, and role (string array)
46
+ * @returns Promise resolving to mutation result with updated CareTeam resource
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const result = await sdk.healthSpace.addCareTeamMember(
51
+ * new AddCareTeamMemberRequest({
52
+ * id: "practitioner-123",
53
+ * type: "Practitioner",
54
+ * role: ["Primary care physician"]
55
+ * })
56
+ * );
57
+ * ```
58
+ */
59
+ addCareTeamMember(request: AddCareTeamMemberRequest): Promise<BWellTransactionResult<AddCareTeamMemberMutationResults, BaseManagerError>>;
60
+ /**
61
+ * Adds multiple care team members in a single operation.
62
+ *
63
+ * @param request - AddCareTeamMembersRequest with members array (each with id, type, and role)
64
+ * @returns Promise resolving to array of mutation results with updated CareTeam resources
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const result = await sdk.healthSpace.addCareTeamMembers(
69
+ * new AddCareTeamMembersRequest({
70
+ * members: [
71
+ * {
72
+ * id: "practitioner-123",
73
+ * type: "Practitioner",
74
+ * role: ["Primary care physician"]
75
+ * },
76
+ * {
77
+ * id: "nurse-456",
78
+ * type: "Practitioner",
79
+ * role: ["Registered Nurse"]
80
+ * }
81
+ * ]
82
+ * })
83
+ * );
84
+ * ```
85
+ */
86
+ addCareTeamMembers(request: AddCareTeamMembersRequest): Promise<BWellTransactionResult<AddCareTeamMembersMutationResults, BaseManagerError>>;
87
+ /**
88
+ * Removes a care team member from a care team.
89
+ *
90
+ * @param request - RemoveCareTeamMemberRequest with id and type
91
+ * @returns Promise resolving to mutation result with updated CareTeam resource
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const result = await sdk.healthSpace.removeCareTeamMember(
96
+ * new RemoveCareTeamMemberRequest({
97
+ * id: "practitioner-123",
98
+ * type: "Practitioner",
99
+ * })
100
+ * );
101
+ * ```
102
+ */
103
+ removeCareTeamMember(request: RemoveCareTeamMemberRequest): Promise<BWellTransactionResult<RemoveCareTeamMemberMutationResults, BaseManagerError>>;
104
+ /**
105
+ * This operation overwrites the member's role(s) with the provided value(s).
106
+ * If you need to preserve existing roles, include them in the role here.
107
+ *
108
+ * @param request - UpdateCareTeamMemberRequest with id, type, and role (string array)
109
+ * @returns Promise resolving to mutation result with updated CareTeam resource
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const result = await sdk.healthSpace.updateCareTeamMember(
114
+ * new UpdateCareTeamMemberRequest({
115
+ * id: "practitioner-123",
116
+ * type: "Practitioner",
117
+ * role: ["Specialist"] // overwrites existing role(s)
118
+ * })
119
+ * );
120
+ * ```
121
+ */
122
+ updateCareTeamMember(request: UpdateCareTeamMemberRequest): Promise<BWellTransactionResult<UpdateCareTeamMemberMutationResults, BaseManagerError>>;
38
123
  }
@@ -2,3 +2,7 @@ export { AppointmentsResults, CancelAppointmentResults, HealthSpaceManager, Canc
2
2
  export { AppointmentsRequest, AppointmentsRequestInput, } from "./appointments-request.js";
3
3
  export { CancelAppointmentRequest, CancelAppointmentRequestInput, } from "./cancel-appointment-request.js";
4
4
  export { CancelationReasonsRequest, CancelationReasonsRequestInput, } from "./cancelationReasons-request.js";
5
+ export { RemoveCareTeamMemberRequest, RemoveCareTeamMemberInput, } from "./remove-care-team-member-request.js";
6
+ export { AddCareTeamMemberInput, AddCareTeamMemberRequest, } from "./add-care-team-member-request.js";
7
+ export { AddCareTeamMembersRequest, AddCareTeamMembersInput, } from "./add-care-team-members-request.js";
8
+ export { UpdateCareTeamMemberRequest, UpdateCareTeamMemberInput, UpdateCareTeamMemberType, } from "./update-care-team-member-request.js";
@@ -1,3 +1,7 @@
1
1
  export { AppointmentsRequest, } from "./appointments-request.js";
2
2
  export { CancelAppointmentRequest, } from "./cancel-appointment-request.js";
3
3
  export { CancelationReasonsRequest, } from "./cancelationReasons-request.js";
4
+ export { RemoveCareTeamMemberRequest, } from "./remove-care-team-member-request.js";
5
+ export { AddCareTeamMemberRequest, } from "./add-care-team-member-request.js";
6
+ export { AddCareTeamMembersRequest, } from "./add-care-team-members-request.js";
7
+ export { UpdateCareTeamMemberRequest, } from "./update-care-team-member-request.js";
@@ -0,0 +1,34 @@
1
+ import { ErrorsCollector, ValidationRequest } from "../../../requests/index.js";
2
+ import { UpdateCareTeamMemberInput } from "./update-care-team-member-request.js";
3
+ /**
4
+ * Input type for removing care team members.
5
+ * Same structure as UpdateCareTeamMemberInput since we only need id, type, and role to identify the member.
6
+ */
7
+ export type RemoveCareTeamMemberInput = UpdateCareTeamMemberInput;
8
+ /**
9
+ * Validator class for removing a single care team member.
10
+ * This class reuses the UpdateCareTeamMemberRequestValidator validation logic with optional roles.
11
+ */
12
+ declare class RemoveCareTeamMemberRequestValidator {
13
+ private updateValidator;
14
+ /**
15
+ * Validates the provided `RemoveCareTeamMemberInput` data with roles optional.
16
+ *
17
+ * @param data - The input data to validate, containing member details to remove.
18
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
19
+ */
20
+ validate(data: RemoveCareTeamMemberInput, errors: ErrorsCollector): void;
21
+ }
22
+ /**
23
+ * Represents a request for removing a single care team member.
24
+ * This class reuses the validation logic from UpdateCareTeamMemberRequest.
25
+ *
26
+ * @extends ValidationRequest<RemoveCareTeamMemberInput>
27
+ * @category Requests
28
+ * @title RemoveCareTeamMemberRequest
29
+ * @excerpt Request class for removing a single care team member
30
+ */
31
+ export declare class RemoveCareTeamMemberRequest extends ValidationRequest<RemoveCareTeamMemberInput> {
32
+ protected validator: RemoveCareTeamMemberRequestValidator;
33
+ }
34
+ export {};
@@ -0,0 +1,36 @@
1
+ import { ValidationRequest } from "../../../requests/index.js";
2
+ import { UpdateCareTeamMemberRequestValidator, } from "./update-care-team-member-request.js";
3
+ /**
4
+ * Validator class for removing a single care team member.
5
+ * This class reuses the UpdateCareTeamMemberRequestValidator validation logic with optional roles.
6
+ */
7
+ class RemoveCareTeamMemberRequestValidator {
8
+ constructor() {
9
+ this.updateValidator = new UpdateCareTeamMemberRequestValidator();
10
+ }
11
+ /**
12
+ * Validates the provided `RemoveCareTeamMemberInput` data with roles optional.
13
+ *
14
+ * @param data - The input data to validate, containing member details to remove.
15
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
16
+ */
17
+ validate(data, errors) {
18
+ // Delegate to the update validator with requireRole: false for remove operations
19
+ this.updateValidator.validate(data, errors, { requireRole: false });
20
+ }
21
+ }
22
+ /**
23
+ * Represents a request for removing a single care team member.
24
+ * This class reuses the validation logic from UpdateCareTeamMemberRequest.
25
+ *
26
+ * @extends ValidationRequest<RemoveCareTeamMemberInput>
27
+ * @category Requests
28
+ * @title RemoveCareTeamMemberRequest
29
+ * @excerpt Request class for removing a single care team member
30
+ */
31
+ export class RemoveCareTeamMemberRequest extends ValidationRequest {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.validator = new RemoveCareTeamMemberRequestValidator();
35
+ }
36
+ }
@@ -0,0 +1,55 @@
1
+ import { CodeableConceptFieldsFragment } from "../../../graphql/operations/types.js";
2
+ import { ErrorsCollector, ValidationRequest } from "../../../requests/index.js";
3
+ /**
4
+ * Supported care team member types based on FHIR resource types.
5
+ */
6
+ export type UpdateCareTeamMemberType = "Practitioner" | "PractitionerRole" | "Patient" | "RelatedPerson" | "Organization" | "CareTeam";
7
+ /**
8
+ * FHIR CodeableConcept structure for roles (using GraphQL generated types)
9
+ */
10
+ export type CodeableConcept = CodeableConceptFieldsFragment;
11
+ /**
12
+ * Input type for updating a single care team member.
13
+ * role in the input is expected to be a list of strings (e.g. ["Primary care physician"]).
14
+ */
15
+ export type UpdateCareTeamMemberInput = {
16
+ /** Resource ID of the care team member */
17
+ id: string;
18
+ /** FHIR resource type of the member */
19
+ type: UpdateCareTeamMemberType;
20
+ /** Array of role strings (preferred) */
21
+ role?: string[];
22
+ };
23
+ /**
24
+ * Shared validator class for care team member operations.
25
+ * This class provides the core validation logic that can be reused by other request types.
26
+ */
27
+ export declare class UpdateCareTeamMemberRequestValidator {
28
+ /**
29
+ * Validates the provided `UpdateCareTeamMemberInput` data and collects any validation errors.
30
+ *
31
+ * @param data - The input data to validate, containing member details.
32
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
33
+ * @param options - Validation options to customize behavior.
34
+ * @param options.requireRole - Whether the role field is required (default: true).
35
+ *
36
+ * @remarks
37
+ * - The `id` field is required and must be a non-empty string.
38
+ * - The `type` field is required and must be a valid UpdateCareTeamMemberType.
39
+ * - The `role` field validation depends on the `requireRole` option.
40
+ */
41
+ validate(data: UpdateCareTeamMemberInput, errors: ErrorsCollector, options?: {
42
+ requireRole?: boolean;
43
+ }): void;
44
+ }
45
+ /**
46
+ * Represents a request for updating a single care team member.
47
+ *
48
+ * @extends ValidationRequest<UpdateCareTeamMemberInput>
49
+ * @category Requests
50
+ * @title UpdateCareTeamMemberRequest
51
+ * @excerpt Core request class for single care team member operations
52
+ */
53
+ export declare class UpdateCareTeamMemberRequest extends ValidationRequest<UpdateCareTeamMemberInput> {
54
+ protected validator: UpdateCareTeamMemberRequestValidator;
55
+ }
@@ -0,0 +1,71 @@
1
+ import { ValidationRequest } from "../../../requests/index.js";
2
+ import { isBlank, isNotNullOrUndefined } from "../../../utils/index.js";
3
+ /**
4
+ * Shared validator class for care team member operations.
5
+ * This class provides the core validation logic that can be reused by other request types.
6
+ */
7
+ export class UpdateCareTeamMemberRequestValidator {
8
+ /**
9
+ * Validates the provided `UpdateCareTeamMemberInput` data and collects any validation errors.
10
+ *
11
+ * @param data - The input data to validate, containing member details.
12
+ * @param errors - An instance of `ErrorsCollector` to collect validation errors.
13
+ * @param options - Validation options to customize behavior.
14
+ * @param options.requireRole - Whether the role field is required (default: true).
15
+ *
16
+ * @remarks
17
+ * - The `id` field is required and must be a non-empty string.
18
+ * - The `type` field is required and must be a valid UpdateCareTeamMemberType.
19
+ * - The `role` field validation depends on the `requireRole` option.
20
+ */
21
+ validate(data, errors, options = {}) {
22
+ const { requireRole = true } = options;
23
+ // Validate id
24
+ if (!isNotNullOrUndefined(data.id)) {
25
+ errors.add("Member id is required");
26
+ }
27
+ else if (isBlank(data.id)) {
28
+ errors.add("Member id cannot be empty");
29
+ }
30
+ else if (data.id.length > 255) {
31
+ errors.add("Member id cannot exceed 255 characters");
32
+ }
33
+ // Validate type
34
+ if (!isNotNullOrUndefined(data.type)) {
35
+ errors.add("Member type is required");
36
+ }
37
+ else if (isBlank(data.type)) {
38
+ errors.add("Member type cannot be empty");
39
+ }
40
+ // Validate role (must be array of non-blank strings when required or provided)
41
+ const roleProvided = isNotNullOrUndefined(data.role);
42
+ if (requireRole && !roleProvided) {
43
+ errors.add("Member role is required");
44
+ }
45
+ if (roleProvided && data.role) {
46
+ for (let roleIndex = 0; roleIndex < data.role.length; roleIndex++) {
47
+ const roleItem = data.role[roleIndex];
48
+ if (!isNotNullOrUndefined(roleItem)) {
49
+ errors.add(`Role ${roleIndex}: Cannot be null or undefined`);
50
+ }
51
+ else if (isBlank(roleItem)) {
52
+ errors.add(`Role ${roleIndex}: Cannot be blank`);
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * Represents a request for updating a single care team member.
60
+ *
61
+ * @extends ValidationRequest<UpdateCareTeamMemberInput>
62
+ * @category Requests
63
+ * @title UpdateCareTeamMemberRequest
64
+ * @excerpt Core request class for single care team member operations
65
+ */
66
+ export class UpdateCareTeamMemberRequest extends ValidationRequest {
67
+ constructor() {
68
+ super(...arguments);
69
+ this.validator = new UpdateCareTeamMemberRequestValidator();
70
+ }
71
+ }
@@ -0,0 +1,20 @@
1
+ import { AddCareTeamMemberMutationVariables } from "../../../graphql/operations/types.js";
2
+ import { RequestFactory } from "../../../requests/index.js";
3
+ import { AddCareTeamMemberRequest } from "../../base/health-space/add-care-team-member-request.js";
4
+ /**
5
+ * Factory class for transforming AddCareTeamMemberRequest objects into GraphQL mutation variables.
6
+ * Handles the conversion between the SDK's domain model and the GraphQL API format.
7
+ * Automatically sets the start date to the current time for active membership.
8
+ *
9
+ * @implements RequestFactory<AddCareTeamMemberRequest, AddCareTeamMemberMutationVariables>
10
+ */
11
+ export declare class AddCareTeamMemberRequestFactory implements RequestFactory<AddCareTeamMemberRequest, AddCareTeamMemberMutationVariables> {
12
+ /**
13
+ * Creates GraphQL mutation variables from an AddCareTeamMemberRequest.
14
+ * Sets the start date to the current time for active membership.
15
+ *
16
+ * @param request - The AddCareTeamMemberRequest to transform
17
+ * @returns AddCareTeamMemberMutationVariables suitable for the GraphQL mutation
18
+ */
19
+ create(request: AddCareTeamMemberRequest): AddCareTeamMemberMutationVariables;
20
+ }
@@ -0,0 +1,29 @@
1
+ import { getCurrentDateTime } from "../../../utils/index.js";
2
+ import { buildCareTeamParticipant } from "./care-team-factory-utils.js";
3
+ /**
4
+ * Factory class for transforming AddCareTeamMemberRequest objects into GraphQL mutation variables.
5
+ * Handles the conversion between the SDK's domain model and the GraphQL API format.
6
+ * Automatically sets the start date to the current time for active membership.
7
+ *
8
+ * @implements RequestFactory<AddCareTeamMemberRequest, AddCareTeamMemberMutationVariables>
9
+ */
10
+ export class AddCareTeamMemberRequestFactory {
11
+ /**
12
+ * Creates GraphQL mutation variables from an AddCareTeamMemberRequest.
13
+ * Sets the start date to the current time for active membership.
14
+ *
15
+ * @param request - The AddCareTeamMemberRequest to transform
16
+ * @returns AddCareTeamMemberMutationVariables suitable for the GraphQL mutation
17
+ */
18
+ create(request) {
19
+ const input = request.data();
20
+ // Use shared participant builder with period for add operation
21
+ const participant = buildCareTeamParticipant(input, {
22
+ start: getCurrentDateTime(),
23
+ end: null,
24
+ });
25
+ return {
26
+ participant,
27
+ };
28
+ }
29
+ }
@@ -0,0 +1,16 @@
1
+ import { AddCareTeamMembersMutationVariables } from "../../../graphql/operations/types.js";
2
+ import { RequestFactory } from "../../../requests/index.js";
3
+ import { AddCareTeamMembersRequest } from "../../base/health-space/add-care-team-members-request.js";
4
+ /**
5
+ * Factory class for transforming AddCareTeamMembersRequest objects into GraphQL mutation variables.
6
+ */
7
+ export declare class AddCareTeamMembersRequestFactory implements RequestFactory<AddCareTeamMembersRequest, AddCareTeamMembersMutationVariables> {
8
+ /**
9
+ * Creates GraphQL mutation variables from an AddCareTeamMembersRequest.
10
+ * Sets the start date to the current time for all members being added.
11
+ *
12
+ * @param request - The AddCareTeamMembersRequest to transform
13
+ * @returns AddCareTeamMembersMutationVariables suitable for the GraphQL mutation
14
+ */
15
+ create(request: AddCareTeamMembersRequest): AddCareTeamMembersMutationVariables;
16
+ }
@@ -0,0 +1,23 @@
1
+ import { getCurrentDateTime } from "../../../utils/index.js";
2
+ import { buildCareTeamParticipant } from "./care-team-factory-utils.js";
3
+ /**
4
+ * Factory class for transforming AddCareTeamMembersRequest objects into GraphQL mutation variables.
5
+ */
6
+ export class AddCareTeamMembersRequestFactory {
7
+ /**
8
+ * Creates GraphQL mutation variables from an AddCareTeamMembersRequest.
9
+ * Sets the start date to the current time for all members being added.
10
+ *
11
+ * @param request - The AddCareTeamMembersRequest to transform
12
+ * @returns AddCareTeamMembersMutationVariables suitable for the GraphQL mutation
13
+ */
14
+ create(request) {
15
+ const input = request.data();
16
+ const currentDateTime = getCurrentDateTime();
17
+ const participants = input.members.map((member) => buildCareTeamParticipant(member, { start: currentDateTime, end: null }));
18
+ // Return with participant array structure expected by GraphQL
19
+ return {
20
+ participant: participants,
21
+ };
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared utility functions for CareTeam request factories.
3
+ * Provides common participant-building logic used across add/update/remove operations.
4
+ */
5
+ import { CareTeamParticipantInput } from "../../../graphql/schema.js";
6
+ /**
7
+ * Builds a participant object for CareTeam mutations.
8
+ * Used by add, update, and remove care team member factories.
9
+ *
10
+ * @param input - Member input containing id, type, and optional role
11
+ * @param period - Optional period object. If undefined, period is omitted (for update operations).
12
+ * For add: { start: currentDateTime, end: null }
13
+ * For remove: { end: currentDateTime }
14
+ * @returns Participant object formatted for GraphQL mutation
15
+ */
16
+ export declare function buildCareTeamParticipant(input: {
17
+ id: string;
18
+ type: string;
19
+ role?: string[];
20
+ }, period?: {
21
+ start?: string | null;
22
+ end?: string | null;
23
+ } | null): CareTeamParticipantInput;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared utility functions for CareTeam request factories.
3
+ * Provides common participant-building logic used across add/update/remove operations.
4
+ */
5
+ /**
6
+ * Builds a participant object for CareTeam mutations.
7
+ * Used by add, update, and remove care team member factories.
8
+ *
9
+ * @param input - Member input containing id, type, and optional role
10
+ * @param period - Optional period object. If undefined, period is omitted (for update operations).
11
+ * For add: { start: currentDateTime, end: null }
12
+ * For remove: { end: currentDateTime }
13
+ * @returns Participant object formatted for GraphQL mutation
14
+ */
15
+ export function buildCareTeamParticipant(input, period) {
16
+ const roleCodeableConcepts = (input.role || []).map((r) => ({
17
+ text: r,
18
+ }));
19
+ const participant = {
20
+ id: input.id,
21
+ member: {
22
+ reference: `${input.type}/${input.id}`,
23
+ },
24
+ role: roleCodeableConcepts,
25
+ };
26
+ if (period !== undefined) {
27
+ participant.period = period;
28
+ }
29
+ return participant;
30
+ }