vintasend-medplum 0.4.5 → 0.4.7
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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MedplumClient } from '@medplum/core';
|
|
2
2
|
import type { BaseAttachmentManager } from 'vintasend/dist/services/attachment-manager/base-attachment-manager';
|
|
3
|
+
import type { BaseLogger } from 'vintasend/dist/services/loggers/base-logger';
|
|
3
4
|
import type { BaseNotificationBackend } from 'vintasend/dist/services/notification-backends/base-notification-backend';
|
|
4
5
|
import type { AttachmentFileRecord, StoredAttachment } from 'vintasend/dist/types/attachment';
|
|
5
6
|
import type { InputJsonValue } from 'vintasend/dist/types/json-values';
|
|
@@ -13,11 +14,16 @@ export declare class MedplumNotificationBackend<Config extends BaseNotificationT
|
|
|
13
14
|
private medplum;
|
|
14
15
|
private options;
|
|
15
16
|
private attachmentManager?;
|
|
17
|
+
private logger?;
|
|
16
18
|
constructor(medplum: MedplumClient, options?: MedplumNotificationBackendOptions);
|
|
17
19
|
/**
|
|
18
20
|
* Inject attachment manager (called by VintaSend when both service and backend exist)
|
|
19
21
|
*/
|
|
20
22
|
injectAttachmentManager(manager: BaseAttachmentManager): void;
|
|
23
|
+
/**
|
|
24
|
+
* Inject logger for debugging and monitoring
|
|
25
|
+
*/
|
|
26
|
+
injectLogger(logger: BaseLogger): void;
|
|
21
27
|
/**
|
|
22
28
|
* Get attachment manager with null check
|
|
23
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"medplum-backend.d.ts","sourceRoot":"","sources":["../src/medplum-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yEAAyE,CAAC;AACvH,OAAO,KAAK,EAEV,oBAAoB,EAGpB,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,2CAA2C,CAAC;AAEnD,KAAK,iCAAiC,GAAG;IACvC,oCAAoC,CAAC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAGF,qBAAa,0BAA0B,CAAC,MAAM,SAAS,0BAA0B,CAAE,YAAW,uBAAuB,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"medplum-backend.d.ts","sourceRoot":"","sources":["../src/medplum-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/medplum-backend.js
CHANGED
|
@@ -11,6 +11,12 @@ export class MedplumNotificationBackend {
|
|
|
11
11
|
injectAttachmentManager(manager) {
|
|
12
12
|
this.attachmentManager = manager;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Inject logger for debugging and monitoring
|
|
16
|
+
*/
|
|
17
|
+
injectLogger(logger) {
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
}
|
|
14
20
|
/**
|
|
15
21
|
* Get attachment manager with null check
|
|
16
22
|
*/
|
|
@@ -166,7 +172,14 @@ export class MedplumNotificationBackend {
|
|
|
166
172
|
},
|
|
167
173
|
};
|
|
168
174
|
const created = await this.medplum.createResource(communication);
|
|
169
|
-
|
|
175
|
+
const mappedNotification = this.mapToDatabaseNotification(created);
|
|
176
|
+
// Load and attach attachments to the returned notification if they were provided
|
|
177
|
+
if (notification.attachments && notification.attachments.length > 0) {
|
|
178
|
+
this.logger?.info(`[MedplumBackend] Loading ${notification.attachments.length} attachments for notification ${mappedNotification.id}`);
|
|
179
|
+
mappedNotification.attachments = await this.getAttachments(mappedNotification.id);
|
|
180
|
+
this.logger?.info(`[MedplumBackend] Loaded ${mappedNotification.attachments?.length || 0} attachments for notification ${mappedNotification.id}`);
|
|
181
|
+
}
|
|
182
|
+
return mappedNotification;
|
|
170
183
|
}
|
|
171
184
|
async persistNotificationUpdate(notificationId, notification) {
|
|
172
185
|
const existing = await this.medplum.readResource('Communication', notificationId);
|
|
@@ -384,7 +397,12 @@ export class MedplumNotificationBackend {
|
|
|
384
397
|
},
|
|
385
398
|
};
|
|
386
399
|
const created = await this.medplum.createResource(communication);
|
|
387
|
-
|
|
400
|
+
const mappedNotification = this.mapToDatabaseNotification(created);
|
|
401
|
+
// Load and attach attachments to the returned notification if they were provided
|
|
402
|
+
if (notification.attachments && notification.attachments.length > 0) {
|
|
403
|
+
mappedNotification.attachments = await this.getAttachments(mappedNotification.id);
|
|
404
|
+
}
|
|
405
|
+
return mappedNotification;
|
|
388
406
|
}
|
|
389
407
|
async persistOneOffNotificationUpdate(notificationId, notification) {
|
|
390
408
|
const existing = await this.medplum.readResource('Communication', notificationId);
|
|
@@ -702,23 +720,30 @@ export class MedplumNotificationBackend {
|
|
|
702
720
|
try {
|
|
703
721
|
const communication = await this.medplum.readResource('Communication', notificationId);
|
|
704
722
|
const attachments = [];
|
|
723
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Fetching attachments for notification ${notificationId}`);
|
|
724
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Communication has ${communication.payload?.length || 0} payload items`);
|
|
705
725
|
// Extract all Media IDs from payload
|
|
706
726
|
const mediaIds = [];
|
|
707
727
|
const payloadMap = new Map();
|
|
708
728
|
for (const payload of communication.payload || []) {
|
|
729
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Payload item: ${JSON.stringify(payload, null, 2)}`);
|
|
709
730
|
const attachment = payload.contentAttachment;
|
|
710
731
|
if (!attachment || !attachment.url)
|
|
711
732
|
continue;
|
|
733
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Found attachment URL: ${attachment.url}`);
|
|
712
734
|
// Extract Media ID from URL
|
|
713
735
|
const match = attachment.url.match(/Media\/([^/]+)/);
|
|
714
736
|
if (!match)
|
|
715
737
|
continue;
|
|
716
738
|
const mediaId = match[1];
|
|
739
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Extracted Media ID: ${mediaId}`);
|
|
717
740
|
mediaIds.push(mediaId);
|
|
718
741
|
payloadMap.set(mediaId, { description: attachment.title });
|
|
719
742
|
}
|
|
743
|
+
this.logger?.info(`[MedplumBackend.getAttachments] Found ${mediaIds.length} media IDs: ${mediaIds.join(', ')}`);
|
|
720
744
|
// Fetch all Media resources in a single query
|
|
721
745
|
if (mediaIds.length === 0) {
|
|
746
|
+
this.logger?.info(`[MedplumBackend.getAttachments] No media IDs found, returning empty array`);
|
|
722
747
|
return [];
|
|
723
748
|
}
|
|
724
749
|
const mediaResources = await this.medplum.searchResources('Media', {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vintasend-medplum",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@medplum/fhirtypes": "^5.0.10",
|
|
26
26
|
"pdfmake": "^0.2.23",
|
|
27
27
|
"pug": "^3.0.3",
|
|
28
|
-
"vintasend": "^0.4.
|
|
28
|
+
"vintasend": "^0.4.7"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@medplum/definitions": "^5.0.10",
|