@ovok/core 0.4.30 → 0.4.32
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/client/ai-fhir/methods/AIFhirResources.d.ts +2 -1
- package/dist/client/ai-fhir/methods/AIFhirResources.js +2 -2
- package/dist/client/auth/methods/appleLogin.d.ts +2 -1
- package/dist/client/auth/methods/appleLogin.js +2 -2
- package/dist/client/auth/methods/changePassword.d.ts +2 -1
- package/dist/client/auth/methods/changePassword.js +2 -2
- package/dist/client/auth/methods/getSessions.d.ts +2 -1
- package/dist/client/auth/methods/getSessions.js +2 -2
- package/dist/client/auth/methods/googleLogin.d.ts +2 -1
- package/dist/client/auth/methods/googleLogin.js +2 -2
- package/dist/client/auth/methods/index.d.ts +1 -0
- package/dist/client/auth/methods/index.js +1 -0
- package/dist/client/auth/methods/login.d.ts +6 -2
- package/dist/client/auth/methods/login.js +60 -44
- package/dist/client/auth/methods/logout.d.ts +2 -1
- package/dist/client/auth/methods/logout.js +2 -2
- package/dist/client/auth/methods/refetchProfile.d.ts +2 -1
- package/dist/client/auth/methods/refetchProfile.js +3 -4
- package/dist/client/auth/methods/register.d.ts +2 -1
- package/dist/client/auth/methods/register.js +2 -2
- package/dist/client/auth/methods/registerPractitioner.d.ts +2 -1
- package/dist/client/auth/methods/registerPractitioner.js +2 -2
- package/dist/client/auth/methods/reloadSession.d.ts +7 -0
- package/dist/client/auth/methods/reloadSession.js +23 -0
- package/dist/client/auth/methods/requestDeleteUser.d.ts +2 -1
- package/dist/client/auth/methods/requestDeleteUser.js +5 -5
- package/dist/client/auth/methods/resetPassword.d.ts +2 -1
- package/dist/client/auth/methods/resetPassword.js +2 -2
- package/dist/client/auth/methods/revokeSessions.d.ts +2 -1
- package/dist/client/auth/methods/revokeSessions.js +2 -2
- package/dist/client/auth/methods/setPasswordFromReset.d.ts +2 -1
- package/dist/client/auth/methods/setPasswordFromReset.js +2 -2
- package/dist/client/auth/types/LoginBody.d.ts +10 -20
- package/dist/client/auth/types/LoginError.d.ts +15 -0
- package/dist/client/auth/types/LoginError.js +15 -0
- package/dist/client/bot/methods/executeBot.d.ts +2 -1
- package/dist/client/bot/methods/executeBot.js +2 -2
- package/dist/client/change-history/methods.d.ts +2 -1
- package/dist/client/change-history/methods.js +2 -2
- package/dist/client/chat/ai/methods/createAiSession.d.ts +2 -1
- package/dist/client/chat/ai/methods/createAiSession.js +2 -2
- package/dist/client/cms/methods.d.ts +6 -5
- package/dist/client/cms/methods.js +10 -10
- package/dist/client/consent/methods.d.ts +5 -4
- package/dist/client/consent/methods.js +8 -8
- package/dist/client/email/methods.d.ts +2 -1
- package/dist/client/email/methods.js +2 -2
- package/dist/client/errors/ovok-error-utils.d.ts +7 -0
- package/dist/client/errors/ovok-error-utils.js +49 -5
- package/dist/client/errors/ovok-error.d.ts +4 -0
- package/dist/client/errors/ovok-error.js +17 -4
- package/dist/client/errors/rate-limit-error.js +5 -3
- package/dist/client/experience/methods.d.ts +32 -31
- package/dist/client/experience/methods.js +62 -62
- package/dist/client/invites/methods.d.ts +6 -5
- package/dist/client/invites/methods.js +11 -11
- package/dist/client/notifications/methods.d.ts +6 -5
- package/dist/client/notifications/methods.js +10 -10
- package/dist/client/notifications/types.d.ts +92 -11
- package/dist/client/observation/methods/getLatestObservationsByCodes.d.ts +2 -1
- package/dist/client/observation/methods/getLatestObservationsByCodes.js +4 -4
- package/dist/client/offline/offline-measurement-queue.d.ts +4 -3
- package/dist/client/offline/offline-measurement-queue.js +6 -6
- package/dist/client/ovok-client.d.ts +28 -11
- package/dist/client/ovok-client.js +353 -31
- package/dist/client/patient/methods.d.ts +24 -23
- package/dist/client/patient/methods.js +49 -49
- package/dist/client/patient-sharing/methods.d.ts +7 -6
- package/dist/client/patient-sharing/methods.js +12 -12
- package/dist/client/platform/methods.d.ts +24 -23
- package/dist/client/platform/methods.js +46 -46
- package/dist/client/questionnaire-response/methods/createQuestionnaireResponseWithObservations.d.ts +2 -1
- package/dist/client/questionnaire-response/methods/createQuestionnaireResponseWithObservations.js +2 -2
- package/dist/client/questionnaire-response/methods/extractQuestionnaireObservations.d.ts +2 -1
- package/dist/client/questionnaire-response/methods/extractQuestionnaireObservations.js +2 -2
- package/dist/client/questionnaire-response/methods/populateQuestionnaire.d.ts +2 -1
- package/dist/client/questionnaire-response/methods/populateQuestionnaire.js +2 -2
- package/dist/client/questionnaire-response/methods/submitQuestionnaireResponse.d.ts +2 -1
- package/dist/client/questionnaire-response/methods/submitQuestionnaireResponse.js +2 -2
- package/dist/client/signals/methods.d.ts +22 -21
- package/dist/client/signals/methods.js +42 -42
- package/dist/client/slim/methods.d.ts +93 -57
- package/dist/client/slim/methods.js +295 -108
- package/dist/client/slim/paging.d.ts +18 -0
- package/dist/client/slim/paging.js +57 -0
- package/dist/client/slim/types.d.ts +370 -3
- package/dist/conformance/api-requirements.js +22 -0
- package/dist/conformance/capability-requirements.js +1 -1
- package/dist/hooks/account-hooks.js +7 -7
- package/dist/hooks/api-hooks.d.ts +5 -2
- package/dist/hooks/api-hooks.js +39 -16
- package/dist/hooks/cms-hooks.js +3 -3
- package/dist/hooks/email-hooks.js +1 -1
- package/dist/hooks/experience-hooks.js +5 -5
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +5 -3
- package/dist/hooks/notification-ack-hooks.d.ts +2 -1
- package/dist/hooks/notification-hooks.d.ts +4 -2
- package/dist/hooks/notification-hooks.js +11 -23
- package/dist/hooks/notification-invalidation.d.ts +3 -2
- package/dist/hooks/notification-invalidation.js +10 -1
- package/dist/hooks/notification-note-hooks.js +3 -3
- package/dist/hooks/observation-hooks.d.ts +5 -1
- package/dist/hooks/observation-hooks.js +6 -6
- package/dist/hooks/patient-hooks.js +18 -18
- package/dist/hooks/patient-sharing-hooks.js +2 -2
- package/dist/hooks/platform-hooks.js +3 -3
- package/dist/hooks/poll-hooks.d.ts +14 -0
- package/dist/hooks/poll-hooks.js +127 -0
- package/dist/hooks/signals-alert-hooks.d.ts +5 -20
- package/dist/hooks/signals-alert-hooks.js +38 -34
- package/dist/hooks/signals-alert-item-hooks.d.ts +19 -0
- package/dist/hooks/signals-alert-item-hooks.js +62 -0
- package/dist/hooks/signals-hooks.js +2 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/utils/auth/exchange-code.d.ts +2 -0
- package/dist/utils/auth/exchange-code.js +2 -2
- package/dist/utils/auth/handle-tenant-code.d.ts +1 -1
- package/dist/utils/auth/handle-tenant-code.js +13 -4
- package/dist/utils/auth/start-login.d.ts +3 -1
- package/dist/utils/auth/start-login.js +3 -3
- package/package.json +1 -1
|
@@ -46,14 +46,14 @@ const query = (params) => {
|
|
|
46
46
|
return encoded === "" ? "" : `?${encoded}`;
|
|
47
47
|
};
|
|
48
48
|
const documentUrl = (client, path, params) => `${client.getBaseUrl().replace(/\/$/, "")}${path}${query(params)}`;
|
|
49
|
-
async function requestConsentSignature(consentId) {
|
|
50
|
-
return this.post(`/consent/signature/${segment(consentId)}
|
|
49
|
+
async function requestConsentSignature(consentId, requestOptions) {
|
|
50
|
+
return this.post(`/consent/signature/${segment(consentId)}`, undefined, undefined, requestOptions);
|
|
51
51
|
}
|
|
52
|
-
async function createDocumentUpload(body) {
|
|
53
|
-
return this.post("/document", body);
|
|
52
|
+
async function createDocumentUpload(body, requestOptions) {
|
|
53
|
+
return this.post("/document", body, undefined, requestOptions);
|
|
54
54
|
}
|
|
55
|
-
async function listDocuments(params = {}) {
|
|
56
|
-
return this.get(`/document${query(params)}
|
|
55
|
+
async function listDocuments(params = {}, requestOptions) {
|
|
56
|
+
return this.get(`/document${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
57
57
|
}
|
|
58
58
|
/** Returns the authenticated document endpoint; navigating/fetching it follows the backend redirect. */
|
|
59
59
|
async function getDocumentDownloadUrl(documentId, params = {}) {
|
|
@@ -63,87 +63,87 @@ async function getDocumentDownloadUrl(documentId, params = {}) {
|
|
|
63
63
|
async function getPublicDocumentDownloadUrl(token, params = {}) {
|
|
64
64
|
return documentUrl(this, `/document/public/${segment(token)}`, params);
|
|
65
65
|
}
|
|
66
|
-
async function deleteDocument(documentId) {
|
|
67
|
-
return (await this.delete(`/document/${segment(documentId)}
|
|
66
|
+
async function deleteDocument(documentId, requestOptions) {
|
|
67
|
+
return (await this.delete(`/document/${segment(documentId)}`, ...(requestOptions === undefined ? [] : [requestOptions])));
|
|
68
68
|
}
|
|
69
|
-
async function updateDocumentMetadata(documentId, body) {
|
|
70
|
-
return (await this.patch(`/document/${segment(documentId)}`, body));
|
|
69
|
+
async function updateDocumentMetadata(documentId, body, requestOptions) {
|
|
70
|
+
return (await this.patch(`/document/${segment(documentId)}`, body, ...(requestOptions === undefined ? [] : [requestOptions])));
|
|
71
71
|
}
|
|
72
|
-
async function generateDocumentReplacementUpload(documentId, body) {
|
|
73
|
-
return this.post(`/document/${segment(documentId)}`, body);
|
|
72
|
+
async function generateDocumentReplacementUpload(documentId, body, requestOptions) {
|
|
73
|
+
return this.post(`/document/${segment(documentId)}`, body, undefined, requestOptions);
|
|
74
74
|
}
|
|
75
|
-
async function searchMappedContent(type, language, params = {}) {
|
|
76
|
-
return this.get(`/cms/${segment(type)}/map/${segment(language)}${query(params)}
|
|
75
|
+
async function searchMappedContent(type, language, params = {}, requestOptions) {
|
|
76
|
+
return this.get(`/cms/${segment(type)}/map/${segment(language)}${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
77
77
|
}
|
|
78
|
-
async function copyContentsFromParent(type, language) {
|
|
79
|
-
return this.post(`/cms/${segment(type)}/${segment(language)}/copy-from-parent-project
|
|
78
|
+
async function copyContentsFromParent(type, language, requestOptions) {
|
|
79
|
+
return this.post(`/cms/${segment(type)}/${segment(language)}/copy-from-parent-project`, undefined, undefined, requestOptions);
|
|
80
80
|
}
|
|
81
|
-
async function copyContentFromParent(type, language, key) {
|
|
82
|
-
return this.post(`/cms/${segment(type)}/${segment(language)}/${segment(key)}/copy-from-parent-project
|
|
81
|
+
async function copyContentFromParent(type, language, key, requestOptions) {
|
|
82
|
+
return this.post(`/cms/${segment(type)}/${segment(language)}/${segment(key)}/copy-from-parent-project`, undefined, undefined, requestOptions);
|
|
83
83
|
}
|
|
84
|
-
async function createContent(type, language, body) {
|
|
85
|
-
return this.post(`/cms/${segment(type)}/${segment(language)}`, body);
|
|
84
|
+
async function createContent(type, language, body, requestOptions) {
|
|
85
|
+
return this.post(`/cms/${segment(type)}/${segment(language)}`, body, undefined, requestOptions);
|
|
86
86
|
}
|
|
87
|
-
async function updateContent(type, language, key, body) {
|
|
88
|
-
return (await this.put(`/cms/${segment(type)}/${segment(language)}/${segment(key)}`, body));
|
|
87
|
+
async function updateContent(type, language, key, body, requestOptions) {
|
|
88
|
+
return (await this.put(`/cms/${segment(type)}/${segment(language)}/${segment(key)}`, body, undefined, requestOptions));
|
|
89
89
|
}
|
|
90
|
-
async function getContent(type, language, key) {
|
|
91
|
-
return this.get(`/cms/${segment(type)}/${segment(language)}/${segment(key)}
|
|
90
|
+
async function getContent(type, language, key, requestOptions) {
|
|
91
|
+
return this.get(`/cms/${segment(type)}/${segment(language)}/${segment(key)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
92
92
|
}
|
|
93
|
-
async function deleteContent(type, language, key) {
|
|
94
|
-
await this.delete(`/cms/${segment(type)}/${segment(language)}/${segment(key)}
|
|
93
|
+
async function deleteContent(type, language, key, requestOptions) {
|
|
94
|
+
await this.delete(`/cms/${segment(type)}/${segment(language)}/${segment(key)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
95
95
|
}
|
|
96
|
-
async function searchContent(type, language, params = {}) {
|
|
97
|
-
return this.get(`/cms/${segment(type)}/${segment(language)}${query(params)}
|
|
96
|
+
async function searchContent(type, language, params = {}, requestOptions) {
|
|
97
|
+
return this.get(`/cms/${segment(type)}/${segment(language)}${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
98
98
|
}
|
|
99
|
-
async function createVideoCallAppointment(body) {
|
|
100
|
-
return this.post("/video-call/livekit/appointment", body);
|
|
99
|
+
async function createVideoCallAppointment(body, requestOptions) {
|
|
100
|
+
return this.post("/video-call/livekit/appointment", body, undefined, requestOptions);
|
|
101
101
|
}
|
|
102
|
-
async function updateVideoCallAppointment(appointmentId, body) {
|
|
103
|
-
return (await this.put(`/video-call/livekit/appointment/${segment(appointmentId)}`, body));
|
|
102
|
+
async function updateVideoCallAppointment(appointmentId, body, requestOptions) {
|
|
103
|
+
return (await this.put(`/video-call/livekit/appointment/${segment(appointmentId)}`, body, undefined, requestOptions));
|
|
104
104
|
}
|
|
105
|
-
async function listVideoCallAppointments(params = {}) {
|
|
106
|
-
return this.get(`/video-call/livekit/appointment${query(params)}
|
|
105
|
+
async function listVideoCallAppointments(params = {}, requestOptions) {
|
|
106
|
+
return this.get(`/video-call/livekit/appointment${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
107
107
|
}
|
|
108
|
-
async function getVideoCallAccessPermission(appointmentId) {
|
|
109
|
-
return this.get(`/video-call/livekit/access-permission/${segment(appointmentId)}
|
|
108
|
+
async function getVideoCallAccessPermission(appointmentId, requestOptions) {
|
|
109
|
+
return this.get(`/video-call/livekit/access-permission/${segment(appointmentId)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
110
110
|
}
|
|
111
|
-
async function createVideoCallGuestAccess(appointmentId, body) {
|
|
112
|
-
return this.post(`/video-call/livekit/guest-access/${segment(appointmentId)}`, body);
|
|
111
|
+
async function createVideoCallGuestAccess(appointmentId, body, requestOptions) {
|
|
112
|
+
return this.post(`/video-call/livekit/guest-access/${segment(appointmentId)}`, body, undefined, requestOptions);
|
|
113
113
|
}
|
|
114
|
-
async function createVideoCallUserAccess(appointmentId) {
|
|
115
|
-
return this.post(`/video-call/livekit/user-access/${segment(appointmentId)}
|
|
114
|
+
async function createVideoCallUserAccess(appointmentId, requestOptions) {
|
|
115
|
+
return this.post(`/video-call/livekit/user-access/${segment(appointmentId)}`, undefined, undefined, requestOptions);
|
|
116
116
|
}
|
|
117
|
-
async function sendVideoCallInvite(body) {
|
|
118
|
-
return this.post("/video-call/livekit/mail/invite", body);
|
|
117
|
+
async function sendVideoCallInvite(body, requestOptions) {
|
|
118
|
+
return this.post("/video-call/livekit/mail/invite", body, undefined, requestOptions);
|
|
119
119
|
}
|
|
120
|
-
async function sendVideoCallUpdate(body) {
|
|
121
|
-
return this.post("/video-call/livekit/mail/update", body);
|
|
120
|
+
async function sendVideoCallUpdate(body, requestOptions) {
|
|
121
|
+
return this.post("/video-call/livekit/mail/update", body, undefined, requestOptions);
|
|
122
122
|
}
|
|
123
|
-
async function sendVideoCallCancellation(body) {
|
|
124
|
-
return this.post("/video-call/livekit/mail/cancel", body);
|
|
123
|
+
async function sendVideoCallCancellation(body, requestOptions) {
|
|
124
|
+
return this.post("/video-call/livekit/mail/cancel", body, undefined, requestOptions);
|
|
125
125
|
}
|
|
126
|
-
async function sendVideoCallActiveNotification(appointmentId) {
|
|
127
|
-
return this.post(`/video-call/livekit/notification/active-call/${segment(appointmentId)}
|
|
126
|
+
async function sendVideoCallActiveNotification(appointmentId, requestOptions) {
|
|
127
|
+
return this.post(`/video-call/livekit/notification/active-call/${segment(appointmentId)}`, undefined, undefined, requestOptions);
|
|
128
128
|
}
|
|
129
|
-
async function translate(body) {
|
|
130
|
-
return this.post("/ai/translation", body);
|
|
129
|
+
async function translate(body, requestOptions) {
|
|
130
|
+
return this.post("/ai/translation", body, undefined, requestOptions);
|
|
131
131
|
}
|
|
132
|
-
async function createChatSession(body) {
|
|
133
|
-
return this.post("/ai/session", body);
|
|
132
|
+
async function createChatSession(body, requestOptions) {
|
|
133
|
+
return this.post("/ai/session", body, undefined, requestOptions);
|
|
134
134
|
}
|
|
135
|
-
async function sendChatMessage(sessionId, body) {
|
|
136
|
-
return this.post(`/ai/session/${segment(sessionId)}/message`, body);
|
|
135
|
+
async function sendChatMessage(sessionId, body, requestOptions) {
|
|
136
|
+
return this.post(`/ai/session/${segment(sessionId)}/message`, body, undefined, requestOptions);
|
|
137
137
|
}
|
|
138
|
-
async function listChatSessions(params = {}) {
|
|
139
|
-
return this.get(`/ai/session${query(params)}
|
|
138
|
+
async function listChatSessions(params = {}, requestOptions) {
|
|
139
|
+
return this.get(`/ai/session${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
140
140
|
}
|
|
141
|
-
async function getChatSession(sessionId, params = {}) {
|
|
142
|
-
return this.get(`/ai/session/${segment(sessionId)}${query(params)}
|
|
141
|
+
async function getChatSession(sessionId, params = {}, requestOptions) {
|
|
142
|
+
return this.get(`/ai/session/${segment(sessionId)}${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
143
143
|
}
|
|
144
|
-
async function listChatMessages(sessionId, params = {}) {
|
|
145
|
-
return this.get(`/ai/session/${segment(sessionId)}/message${query(params)}
|
|
144
|
+
async function listChatMessages(sessionId, params = {}, requestOptions) {
|
|
145
|
+
return this.get(`/ai/session/${segment(sessionId)}/message${query(params)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
146
146
|
}
|
|
147
|
-
async function searchAIFhir(request) {
|
|
148
|
-
return this.post("/ai/fhir/search", request);
|
|
147
|
+
async function searchAIFhir(request, requestOptions) {
|
|
148
|
+
return this.post("/ai/fhir/search", request, undefined, requestOptions);
|
|
149
149
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { MedplumRequestOptions } from "@medplum/core";
|
|
1
2
|
import { OvokClient } from "../ovok-client";
|
|
2
3
|
import { PatientSharingPractitionerShare } from "../patient-sharing/types";
|
|
3
4
|
import { AcceptInviteBody, InviteBody, InviteSent } from "./types";
|
|
4
|
-
export declare function invitePractitioner(this: OvokClient, body: InviteBody): Promise<InviteSent>;
|
|
5
|
-
export declare function invitePatient(this: OvokClient, body: InviteBody): Promise<InviteSent>;
|
|
6
|
-
export declare function acceptPractitionerInvite(this: OvokClient, body: AcceptInviteBody): Promise<PatientSharingPractitionerShare>;
|
|
7
|
-
export declare function acceptPatientInvite(this: OvokClient, body: AcceptInviteBody): Promise<PatientSharingPractitionerShare>;
|
|
8
|
-
export declare function acceptInvite(this: OvokClient, body: AcceptInviteBody): Promise<PatientSharingPractitionerShare>;
|
|
5
|
+
export declare function invitePractitioner(this: OvokClient, body: InviteBody, requestOptions?: MedplumRequestOptions): Promise<InviteSent>;
|
|
6
|
+
export declare function invitePatient(this: OvokClient, body: InviteBody, requestOptions?: MedplumRequestOptions): Promise<InviteSent>;
|
|
7
|
+
export declare function acceptPractitionerInvite(this: OvokClient, body: AcceptInviteBody, requestOptions?: MedplumRequestOptions): Promise<PatientSharingPractitionerShare>;
|
|
8
|
+
export declare function acceptPatientInvite(this: OvokClient, body: AcceptInviteBody, requestOptions?: MedplumRequestOptions): Promise<PatientSharingPractitionerShare>;
|
|
9
|
+
export declare function acceptInvite(this: OvokClient, body: AcceptInviteBody, requestOptions?: MedplumRequestOptions): Promise<PatientSharingPractitionerShare>;
|
|
@@ -5,26 +5,26 @@ exports.invitePatient = invitePatient;
|
|
|
5
5
|
exports.acceptPractitionerInvite = acceptPractitionerInvite;
|
|
6
6
|
exports.acceptPatientInvite = acceptPatientInvite;
|
|
7
7
|
exports.acceptInvite = acceptInvite;
|
|
8
|
-
function invitePractitioner(body) {
|
|
9
|
-
return this.post("/v1/invites/practitioner", body);
|
|
8
|
+
function invitePractitioner(body, requestOptions) {
|
|
9
|
+
return this.post("/v1/invites/practitioner", body, undefined, requestOptions);
|
|
10
10
|
}
|
|
11
|
-
function invitePatient(body) {
|
|
12
|
-
return this.post("/v1/invites/patient", body);
|
|
11
|
+
function invitePatient(body, requestOptions) {
|
|
12
|
+
return this.post("/v1/invites/patient", body, undefined, requestOptions);
|
|
13
13
|
}
|
|
14
|
-
function acceptPractitionerInvite(body) {
|
|
15
|
-
return this.post("/v1/invites/practitioner/accept", body);
|
|
14
|
+
function acceptPractitionerInvite(body, requestOptions) {
|
|
15
|
+
return this.post("/v1/invites/practitioner/accept", body, undefined, requestOptions);
|
|
16
16
|
}
|
|
17
|
-
function acceptPatientInvite(body) {
|
|
18
|
-
return this.post("/v1/invites/patient/accept", body);
|
|
17
|
+
function acceptPatientInvite(body, requestOptions) {
|
|
18
|
+
return this.post("/v1/invites/patient/accept", body, undefined, requestOptions);
|
|
19
19
|
}
|
|
20
|
-
function acceptInvite(body) {
|
|
20
|
+
function acceptInvite(body, requestOptions) {
|
|
21
21
|
var _a;
|
|
22
22
|
const resourceType = (_a = this.getProfile()) === null || _a === void 0 ? void 0 : _a.resourceType;
|
|
23
23
|
if (resourceType === "Practitioner") {
|
|
24
|
-
return this.acceptPractitionerInvite(body);
|
|
24
|
+
return this.acceptPractitionerInvite(body, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
25
25
|
}
|
|
26
26
|
if (resourceType === "Patient") {
|
|
27
|
-
return this.acceptPatientInvite(body);
|
|
27
|
+
return this.acceptPatientInvite(body, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
28
28
|
}
|
|
29
29
|
throw new Error("Accepting an invite requires a signed-in Patient or Practitioner profile.");
|
|
30
30
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { MedplumRequestOptions } from "@medplum/core";
|
|
1
2
|
import { OvokClient } from "../ovok-client";
|
|
2
3
|
import { CreateNotificationNote, NotificationNote, NotificationNotes, NotificationTargetKind, UpdateNotificationNote } from "./types";
|
|
3
|
-
export declare function createNotificationNote(this: OvokClient, body: CreateNotificationNote): Promise<NotificationNote>;
|
|
4
|
-
export declare function listNotificationNotes(this: OvokClient, kind: NotificationTargetKind, id: string): Promise<NotificationNotes>;
|
|
5
|
-
export declare function updateNotificationNote(this: OvokClient, noteId: string, body: UpdateNotificationNote): Promise<NotificationNote>;
|
|
6
|
-
export declare function patchNotificationNote(this: OvokClient, noteId: string, body: UpdateNotificationNote): Promise<NotificationNote>;
|
|
7
|
-
export declare function deleteNotificationNote(this: OvokClient, noteId: string): Promise<void>;
|
|
4
|
+
export declare function createNotificationNote(this: OvokClient, body: CreateNotificationNote, requestOptions?: MedplumRequestOptions): Promise<NotificationNote>;
|
|
5
|
+
export declare function listNotificationNotes(this: OvokClient, kind: NotificationTargetKind, id: string, requestOptions?: MedplumRequestOptions): Promise<NotificationNotes>;
|
|
6
|
+
export declare function updateNotificationNote(this: OvokClient, noteId: string, body: UpdateNotificationNote, requestOptions?: MedplumRequestOptions): Promise<NotificationNote>;
|
|
7
|
+
export declare function patchNotificationNote(this: OvokClient, noteId: string, body: UpdateNotificationNote, requestOptions?: MedplumRequestOptions): Promise<NotificationNote>;
|
|
8
|
+
export declare function deleteNotificationNote(this: OvokClient, noteId: string, requestOptions?: MedplumRequestOptions): Promise<void>;
|
|
@@ -12,18 +12,18 @@ const TARGET_PATH = {
|
|
|
12
12
|
medical: "medical",
|
|
13
13
|
alert: "raw-alerts",
|
|
14
14
|
};
|
|
15
|
-
function createNotificationNote(body) {
|
|
16
|
-
return this.post("/v1/slim/notifications/notes", body);
|
|
15
|
+
function createNotificationNote(body, requestOptions) {
|
|
16
|
+
return this.post("/v1/slim/notifications/notes", body, undefined, requestOptions);
|
|
17
17
|
}
|
|
18
|
-
function listNotificationNotes(kind, id) {
|
|
19
|
-
return this.get(`/v1/slim/notifications/${TARGET_PATH[kind]}/${segment(id)}/notes`, { cache: "reload" });
|
|
18
|
+
function listNotificationNotes(kind, id, requestOptions) {
|
|
19
|
+
return this.get(`/v1/slim/notifications/${TARGET_PATH[kind]}/${segment(id)}/notes`, { ...{ cache: "reload" }, ...requestOptions });
|
|
20
20
|
}
|
|
21
|
-
function updateNotificationNote(noteId, body) {
|
|
22
|
-
return this.put(`/v1/slim/notifications/notes/${segment(noteId)}`, body);
|
|
21
|
+
function updateNotificationNote(noteId, body, requestOptions) {
|
|
22
|
+
return this.put(`/v1/slim/notifications/notes/${segment(noteId)}`, body, undefined, requestOptions);
|
|
23
23
|
}
|
|
24
|
-
function patchNotificationNote(noteId, body) {
|
|
25
|
-
return this.patch(`/v1/slim/notifications/notes/${segment(noteId)}`, body);
|
|
24
|
+
function patchNotificationNote(noteId, body, requestOptions) {
|
|
25
|
+
return this.patch(`/v1/slim/notifications/notes/${segment(noteId)}`, body, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
26
26
|
}
|
|
27
|
-
async function deleteNotificationNote(noteId) {
|
|
28
|
-
await this.delete(`/v1/slim/notifications/notes/${segment(noteId)}
|
|
27
|
+
async function deleteNotificationNote(noteId, requestOptions) {
|
|
28
|
+
await this.delete(`/v1/slim/notifications/notes/${segment(noteId)}`, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
29
29
|
}
|
|
@@ -30,14 +30,15 @@ export type UpdateNotificationNote = {
|
|
|
30
30
|
export type SlimAlarmType = "deviceAlarm" | "attention";
|
|
31
31
|
export type SlimAlarmSeverity = "RED" | "YELLOW" | "ATTENTION";
|
|
32
32
|
export type SlimAlarmStatus = "active" | "completed";
|
|
33
|
+
export type SlimAlarmDetails = {
|
|
34
|
+
episodeId: string;
|
|
35
|
+
severity: SlimAlarmSeverity;
|
|
36
|
+
/** The server forwards the device's alarm type without normalizing it. */
|
|
37
|
+
type: string;
|
|
38
|
+
text: string | null;
|
|
39
|
+
};
|
|
33
40
|
export type SlimAlarm = SlimNotification & {
|
|
34
|
-
alarm:
|
|
35
|
-
episodeId: string;
|
|
36
|
-
severity: SlimAlarmSeverity;
|
|
37
|
-
type: SlimAlarmType;
|
|
38
|
-
text: string;
|
|
39
|
-
};
|
|
40
|
-
noteCount: number | null;
|
|
41
|
+
alarm: SlimAlarmDetails | null;
|
|
41
42
|
};
|
|
42
43
|
export type SlimAlarmQuery = {
|
|
43
44
|
type?: SlimAlarmType | readonly SlimAlarmType[];
|
|
@@ -56,6 +57,10 @@ export type SlimAlarmsPage = {
|
|
|
56
57
|
page: number;
|
|
57
58
|
count: number;
|
|
58
59
|
resources: SlimAlarm[];
|
|
60
|
+
truncated: {
|
|
61
|
+
reason: "result-cap" | "scan-budget";
|
|
62
|
+
limit: number;
|
|
63
|
+
} | null;
|
|
59
64
|
};
|
|
60
65
|
export type SlimRecentAlarms = {
|
|
61
66
|
recent: Array<Omit<SlimAlarm, "noteCount"> & {
|
|
@@ -63,7 +68,7 @@ export type SlimRecentAlarms = {
|
|
|
63
68
|
}>;
|
|
64
69
|
total: number;
|
|
65
70
|
warm: false;
|
|
66
|
-
source: "
|
|
71
|
+
source: "redis" | "fhirStore";
|
|
67
72
|
};
|
|
68
73
|
export type SlimRecentOutOfBed = {
|
|
69
74
|
recent: Array<SlimNotification & {
|
|
@@ -83,8 +88,84 @@ export type SlimMedicalNotificationsQuery = {
|
|
|
83
88
|
cursor?: string;
|
|
84
89
|
};
|
|
85
90
|
export type SlimMedicalNotificationsPage = {
|
|
86
|
-
items:
|
|
87
|
-
noteCount: number | null;
|
|
88
|
-
}>;
|
|
91
|
+
items: SlimMedicalNotificationRow[];
|
|
89
92
|
nextCursor: string | null;
|
|
90
93
|
};
|
|
94
|
+
export type SlimMedicalNotificationsCollection = SlimMedicalNotificationsPage & {
|
|
95
|
+
total: number;
|
|
96
|
+
truncated: boolean;
|
|
97
|
+
};
|
|
98
|
+
/** Mirrors the response DTO in Ovok Core's medical-notification contract. */
|
|
99
|
+
export type SlimMedicalNotificationActor = {
|
|
100
|
+
reference: string;
|
|
101
|
+
display: string | null;
|
|
102
|
+
};
|
|
103
|
+
export type SlimMedicalNotificationAcknowledgement = {
|
|
104
|
+
acknowledgedAt: string | null;
|
|
105
|
+
acknowledgedBy: string | null;
|
|
106
|
+
acknowledgedActor: SlimMedicalNotificationActor | null;
|
|
107
|
+
};
|
|
108
|
+
export type SlimMedicalNotificationContext = {
|
|
109
|
+
patientId: string | null;
|
|
110
|
+
patientName: string | null;
|
|
111
|
+
locationId: string | null;
|
|
112
|
+
locationName: string | null;
|
|
113
|
+
room: string | null;
|
|
114
|
+
bed: string | null;
|
|
115
|
+
floor: string | null;
|
|
116
|
+
deviceId: string | null;
|
|
117
|
+
deviceMedplumId: string | null;
|
|
118
|
+
deviceName: string | null;
|
|
119
|
+
organizationId: string | null;
|
|
120
|
+
organizationName: string | null;
|
|
121
|
+
};
|
|
122
|
+
export type SlimMedicalEpisodeValue = {
|
|
123
|
+
observationId: string;
|
|
124
|
+
valueNumber: number | null;
|
|
125
|
+
valueString: string | null;
|
|
126
|
+
valueUnit: string | null;
|
|
127
|
+
note: string | null;
|
|
128
|
+
observedAt: string | null;
|
|
129
|
+
recordedAt: string;
|
|
130
|
+
};
|
|
131
|
+
export type SlimMedicalEpisodeCore = {
|
|
132
|
+
id: string;
|
|
133
|
+
patientId: string;
|
|
134
|
+
code: string;
|
|
135
|
+
system: string | null;
|
|
136
|
+
display: string | null;
|
|
137
|
+
status: string;
|
|
138
|
+
openedAt: string;
|
|
139
|
+
closedAt: string | null;
|
|
140
|
+
closeReason: string | null;
|
|
141
|
+
lastSampleAt: string | null;
|
|
142
|
+
durationMs: number | null;
|
|
143
|
+
observationCount: number | null;
|
|
144
|
+
firingCount: number | null;
|
|
145
|
+
minValue: number | null;
|
|
146
|
+
maxValue: number | null;
|
|
147
|
+
avgValue: number | null;
|
|
148
|
+
lastValue: number | null;
|
|
149
|
+
peakValue: number | null;
|
|
150
|
+
peakAt: string | null;
|
|
151
|
+
lastFiringValue: number | null;
|
|
152
|
+
lastFiringAt: string | null;
|
|
153
|
+
lastObservationId: string | null;
|
|
154
|
+
firedBand: {
|
|
155
|
+
min: number | null;
|
|
156
|
+
max: number | null;
|
|
157
|
+
triggerVersion: number | null;
|
|
158
|
+
} | null;
|
|
159
|
+
};
|
|
160
|
+
export type SlimMedicalNotificationRow = {
|
|
161
|
+
episode: SlimMedicalEpisodeCore;
|
|
162
|
+
carehub: SlimMedicalNotificationContext;
|
|
163
|
+
acknowledgement: SlimMedicalNotificationAcknowledgement | null;
|
|
164
|
+
noteCount: number | null;
|
|
165
|
+
};
|
|
166
|
+
export type SlimMedicalNotificationDetail = Omit<SlimMedicalNotificationRow, "episode"> & {
|
|
167
|
+
episode: SlimMedicalEpisodeCore & {
|
|
168
|
+
values: SlimMedicalEpisodeValue[];
|
|
169
|
+
truncated: boolean;
|
|
170
|
+
};
|
|
171
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Bundle, Observation } from "@medplum/fhirtypes";
|
|
2
|
+
import type { MedplumRequestOptions } from "@medplum/core";
|
|
2
3
|
import { OvokClient } from "../../ovok-client";
|
|
3
4
|
import { GetLatestObservationsByCodeParams } from "../types/GetLatestObservationsByCodeParams";
|
|
4
|
-
export declare function getLatestObservationsByCodes(this: OvokClient, params: GetLatestObservationsByCodeParams): Promise<Bundle<Observation>>;
|
|
5
|
+
export declare function getLatestObservationsByCodes(this: OvokClient, params: GetLatestObservationsByCodeParams, requestOptions?: MedplumRequestOptions): Promise<Bundle<Observation>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getLatestObservationsByCodes = getLatestObservationsByCodes;
|
|
4
|
-
async function getLatestObservationsByCodes(params) {
|
|
4
|
+
async function getLatestObservationsByCodes(params, requestOptions) {
|
|
5
5
|
var _a;
|
|
6
6
|
let patientId = "patientId" in params ? params.patientId : "";
|
|
7
7
|
if (params.me) {
|
|
@@ -15,7 +15,7 @@ async function getLatestObservationsByCodes(params) {
|
|
|
15
15
|
patient: `Patient/${patientId}`,
|
|
16
16
|
...(params.date ? { date: `ge${params.date}` } : {}),
|
|
17
17
|
});
|
|
18
|
-
return this.get(`/fhir/Observation/$lastn?${urlParams.toString()}`, {
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
return this.get(`/fhir/Observation/$lastn?${urlParams.toString()}`, { ...{
|
|
19
|
+
cache: "no-cache",
|
|
20
|
+
}, ...requestOptions });
|
|
21
21
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IClientStorage } from "@medplum/core";
|
|
2
2
|
import { Bundle, BundleEntry, Observation } from "@medplum/fhirtypes";
|
|
3
|
+
import type { MedplumRequestOptions } from "@medplum/core";
|
|
3
4
|
export declare const OFFLINE_MEASUREMENT_QUEUE_STORAGE_KEY = "ovok.core.offline-measurements";
|
|
4
5
|
declare const IDENTIFIER_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/offline-measurement-id";
|
|
5
6
|
export type OfflineMeasurementQueueOptions = {
|
|
@@ -22,7 +23,7 @@ export type OfflineMeasurementFlushResult = {
|
|
|
22
23
|
exhausted: number;
|
|
23
24
|
responses: Record<string, Bundle>;
|
|
24
25
|
};
|
|
25
|
-
type MeasurementTransport = (bundle: Bundle) => Promise<Bundle>;
|
|
26
|
+
type MeasurementTransport = (bundle: Bundle, requestOptions?: MedplumRequestOptions) => Promise<Bundle>;
|
|
26
27
|
declare const stableMeasurementId: (observation: Observation) => string;
|
|
27
28
|
declare const entryForObservation: (observation: Observation) => BundleEntry<Observation>;
|
|
28
29
|
export declare class OfflineMeasurementQueue {
|
|
@@ -35,11 +36,11 @@ export declare class OfflineMeasurementQueue {
|
|
|
35
36
|
private readonly getOwnerKey?;
|
|
36
37
|
private operation;
|
|
37
38
|
constructor(storage: IClientStorage, transport: MeasurementTransport, options?: OfflineMeasurementQueueOptions);
|
|
38
|
-
enqueueAndFlush: (observations: Observation[]) => Promise<{
|
|
39
|
+
enqueueAndFlush: (observations: Observation[], requestOptions?: MedplumRequestOptions) => Promise<{
|
|
39
40
|
id: string;
|
|
40
41
|
flush: OfflineMeasurementFlushResult;
|
|
41
42
|
}>;
|
|
42
|
-
flush: (options?: OfflineMeasurementFlushOptions) => Promise<OfflineMeasurementFlushResult>;
|
|
43
|
+
flush: (options?: OfflineMeasurementFlushOptions, requestOptions?: MedplumRequestOptions) => Promise<OfflineMeasurementFlushResult>;
|
|
43
44
|
private runExclusive;
|
|
44
45
|
private readQueue;
|
|
45
46
|
private writeQueue;
|
|
@@ -81,7 +81,7 @@ class OfflineMeasurementQueue {
|
|
|
81
81
|
this.storage = storage;
|
|
82
82
|
this.transport = transport;
|
|
83
83
|
this.operation = Promise.resolve();
|
|
84
|
-
this.enqueueAndFlush = (observations) => this.runExclusive(async () => {
|
|
84
|
+
this.enqueueAndFlush = (observations, requestOptions) => this.runExclusive(async () => {
|
|
85
85
|
var _a, _b, _c;
|
|
86
86
|
await ((_b = (_a = this.storage).getInitPromise) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
87
87
|
const queue = this.readQueue();
|
|
@@ -102,12 +102,12 @@ class OfflineMeasurementQueue {
|
|
|
102
102
|
});
|
|
103
103
|
this.writeQueue(queue);
|
|
104
104
|
}
|
|
105
|
-
return { id, flush: await this.flushQueue(queue) };
|
|
105
|
+
return { id, flush: await this.flushQueue(queue, {}, ...(requestOptions === undefined ? [] : [requestOptions])) };
|
|
106
106
|
});
|
|
107
|
-
this.flush = (options = {}) => this.runExclusive(async () => {
|
|
107
|
+
this.flush = (options = {}, requestOptions) => this.runExclusive(async () => {
|
|
108
108
|
var _a, _b;
|
|
109
109
|
await ((_b = (_a = this.storage).getInitPromise) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
110
|
-
return this.flushQueue(this.readQueue(), options);
|
|
110
|
+
return this.flushQueue(this.readQueue(), options, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
111
111
|
});
|
|
112
112
|
this.runExclusive = (operation) => {
|
|
113
113
|
const next = this.operation.then(operation, operation);
|
|
@@ -134,7 +134,7 @@ class OfflineMeasurementQueue {
|
|
|
134
134
|
throw new Error(`Offline measurement queue could not be persisted at storage key "${this.storageKey}".`);
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
|
-
this.flushQueue = async (queue, options = {}) => {
|
|
137
|
+
this.flushQueue = async (queue, options = {}, requestOptions) => {
|
|
138
138
|
var _a;
|
|
139
139
|
const result = {
|
|
140
140
|
attempted: 0,
|
|
@@ -174,7 +174,7 @@ class OfflineMeasurementQueue {
|
|
|
174
174
|
resourceType: "Bundle",
|
|
175
175
|
type: "transaction",
|
|
176
176
|
entry: item.entries,
|
|
177
|
-
});
|
|
177
|
+
}, ...(requestOptions === undefined ? [] : [requestOptions]));
|
|
178
178
|
if (isFailedResponse(response)) {
|
|
179
179
|
throw response;
|
|
180
180
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IClientStorage, LoginState, MedplumClient, MedplumClientOptions, SubscriptionManager } from "@medplum/core";
|
|
1
|
+
import { IClientStorage, LoginState, MedplumClient, MedplumClientOptions, MedplumRequestOptions, SubscriptionManager } from "@medplum/core";
|
|
2
2
|
import { Bundle, CapabilityStatement, Observation } from "@medplum/fhirtypes";
|
|
3
3
|
import { OvokPublicApiEndpoint } from "../conformance/capability";
|
|
4
4
|
import * as aiFhirMethods from "./ai-fhir/methods";
|
|
@@ -32,6 +32,25 @@ export type SaveObservationsResult = {
|
|
|
32
32
|
queueId: string;
|
|
33
33
|
};
|
|
34
34
|
export type OvokFhirVersion = "R4" | "R5";
|
|
35
|
+
export type OvokUnauthenticatedReason = {
|
|
36
|
+
type: "refresh-rejected";
|
|
37
|
+
status: 400 | 401 | 403;
|
|
38
|
+
} | {
|
|
39
|
+
type: "refresh-unavailable";
|
|
40
|
+
status?: number;
|
|
41
|
+
} | {
|
|
42
|
+
type: "authentication-rejected";
|
|
43
|
+
status: number;
|
|
44
|
+
} | {
|
|
45
|
+
type: "request-unauthorized";
|
|
46
|
+
status: 401;
|
|
47
|
+
};
|
|
48
|
+
export type OvokClientOptions = Omit<MedplumClientOptions, "onUnauthenticated"> & {
|
|
49
|
+
onUnauthenticated?: (reason: OvokUnauthenticatedReason) => void;
|
|
50
|
+
socialLoginClientId?: string;
|
|
51
|
+
requestTimeoutMs?: number;
|
|
52
|
+
offlineQueue?: OfflineMeasurementQueueOptions;
|
|
53
|
+
};
|
|
35
54
|
export declare class OvokClient extends MedplumClient {
|
|
36
55
|
protected socialLoginClientId: string;
|
|
37
56
|
clientStorage: IClientStorage | undefined;
|
|
@@ -42,10 +61,8 @@ export declare class OvokClient extends MedplumClient {
|
|
|
42
61
|
* @param config - The configuration for the client.
|
|
43
62
|
* @param config.socialLoginClientId - The social login client id to use for the client.
|
|
44
63
|
*/
|
|
45
|
-
constructor(config:
|
|
46
|
-
|
|
47
|
-
offlineQueue?: OfflineMeasurementQueueOptions;
|
|
48
|
-
});
|
|
64
|
+
constructor(config: OvokClientOptions);
|
|
65
|
+
post<T = unknown>(url: URL | string, body?: unknown, contentType?: string, options?: MedplumRequestOptions): Promise<T>;
|
|
49
66
|
/** Lists saved accounts without exposing their access or refresh tokens. */
|
|
50
67
|
getSavedAccounts(): OvokSavedAccount[];
|
|
51
68
|
/** Activates a previously saved account without asking for its password again. */
|
|
@@ -55,21 +72,21 @@ export declare class OvokClient extends MedplumClient {
|
|
|
55
72
|
* Accounts with an expired server session are removed locally; network and service
|
|
56
73
|
* failures retain the account so it can be removed after connectivity returns.
|
|
57
74
|
*/
|
|
58
|
-
removeAccount(accountId: string): Promise<void>;
|
|
75
|
+
removeAccount(accountId: string, requestOptions?: MedplumRequestOptions): Promise<void>;
|
|
59
76
|
/** Removes every saved account and expiry marker from client storage. */
|
|
60
77
|
clearAllAccounts(): void;
|
|
61
78
|
/** Reauthentication clears the expired marker for the account that signed in. */
|
|
62
79
|
setActiveLogin(login: LoginState): Promise<void>;
|
|
63
80
|
/** Saves a measurement immediately, or durably queues it when the opt-in queue is enabled. */
|
|
64
|
-
saveMeasurement(params: GenerateObservationBodyParams): Promise<SaveObservationsResult>;
|
|
81
|
+
saveMeasurement(params: GenerateObservationBodyParams, requestOptions?: MedplumRequestOptions): Promise<SaveObservationsResult>;
|
|
65
82
|
/** Reads Ovok's composed FHIR and public-route capability statement. */
|
|
66
|
-
getCapabilityStatement(version?: OvokFhirVersion): Promise<CapabilityStatement>;
|
|
83
|
+
getCapabilityStatement(version?: OvokFhirVersion, requestOptions?: MedplumRequestOptions): Promise<CapabilityStatement>;
|
|
67
84
|
/** Returns the non-FHIR public routes published by the backend statement. */
|
|
68
|
-
getPublicApiEndpoints(version?: OvokFhirVersion): Promise<OvokPublicApiEndpoint[]>;
|
|
85
|
+
getPublicApiEndpoints(version?: OvokFhirVersion, requestOptions?: MedplumRequestOptions): Promise<OvokPublicApiEndpoint[]>;
|
|
69
86
|
/** Saves observations with conditional creates so a retry cannot create a duplicate. */
|
|
70
|
-
saveObservations(observations: Observation[]): Promise<SaveObservationsResult>;
|
|
87
|
+
saveObservations(observations: Observation[], requestOptions?: MedplumRequestOptions): Promise<SaveObservationsResult>;
|
|
71
88
|
/** Flushes measurements queued while offline. Call this on connectivity/app-resume events. */
|
|
72
|
-
flushOfflineMeasurementQueue(options?: OfflineMeasurementFlushOptions): Promise<OfflineMeasurementFlushResult>;
|
|
89
|
+
flushOfflineMeasurementQueue(options?: OfflineMeasurementFlushOptions, requestOptions?: MedplumRequestOptions): Promise<OfflineMeasurementFlushResult>;
|
|
73
90
|
private getOfflineMeasurementQueue;
|
|
74
91
|
/**
|
|
75
92
|
* Medplum clears its entire client storage after an unrecoverable 401. Keep
|