@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.
- package/dist/__version__.d.ts +1 -1
- package/dist/__version__.js +1 -1
- package/dist/api/base/health-space/add-care-team-member-request.d.ts +33 -0
- package/dist/api/base/health-space/add-care-team-member-request.js +36 -0
- package/dist/api/base/health-space/add-care-team-members-request.d.ts +35 -0
- package/dist/api/base/health-space/add-care-team-members-request.js +61 -0
- package/dist/api/base/health-space/health-space-manager.d.ts +86 -1
- package/dist/api/base/health-space/index.d.ts +4 -0
- package/dist/api/base/health-space/index.js +4 -0
- package/dist/api/base/health-space/remove-care-team-member-request.d.ts +34 -0
- package/dist/api/base/health-space/remove-care-team-member-request.js +36 -0
- package/dist/api/base/health-space/update-care-team-member-request.d.ts +55 -0
- package/dist/api/base/health-space/update-care-team-member-request.js +71 -0
- package/dist/api/graphql-api/health-space/add-care-team-member-request-factory.d.ts +20 -0
- package/dist/api/graphql-api/health-space/add-care-team-member-request-factory.js +29 -0
- package/dist/api/graphql-api/health-space/add-care-team-members-request-factory.d.ts +16 -0
- package/dist/api/graphql-api/health-space/add-care-team-members-request-factory.js +23 -0
- package/dist/api/graphql-api/health-space/care-team-factory-utils.d.ts +23 -0
- package/dist/api/graphql-api/health-space/care-team-factory-utils.js +30 -0
- package/dist/api/graphql-api/health-space/graphql-health-space-manager.d.ts +58 -1
- package/dist/api/graphql-api/health-space/graphql-health-space-manager.js +131 -2
- package/dist/api/graphql-api/health-space/index.d.ts +4 -0
- package/dist/api/graphql-api/health-space/index.js +4 -0
- package/dist/api/graphql-api/health-space/remove-care-team-member-request-factory.d.ts +16 -0
- package/dist/api/graphql-api/health-space/remove-care-team-member-request-factory.js +24 -0
- package/dist/api/graphql-api/health-space/update-care-team-member-request-factory.d.ts +16 -0
- package/dist/api/graphql-api/health-space/update-care-team-member-request-factory.js +20 -0
- package/dist/graphql/operations/index.d.ts +36 -4
- package/dist/graphql/operations/index.js +77 -1
- package/dist/graphql/operations/types.d.ts +168 -17
- package/dist/graphql/schema.d.ts +43 -2
- package/dist/graphql/schema.js +29 -0
- package/dist/utils/date-utils.d.ts +6 -0
- package/dist/utils/date-utils.js +8 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/package.json +1 -1
package/dist/__version__.d.ts
CHANGED
package/dist/__version__.js
CHANGED
|
@@ -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
|
+
}
|