Skip to content

Commit cb25fcd

Browse files
committed
Addresses bug when updating report after lots of updates
1 parent 9ba7d0a commit cb25fcd

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

src/lib/AddFileLTT.svelte

+22-3
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@
5555
let patient: any = resourcesToReview.filter((r) => r.resourceType === "Patient")[0];
5656
// TODO: Get summary DocumentReferences from resourcesToReview
5757
let summaryDocRefs: any[] = resourcesToReview.filter((r) => r.resourceType === "DocumentReference" && !(r.type?.coding[0]?.code === "34108-1"));
58+
if (summaryDocRefs.length === 0) {
59+
console.error('No sessions found for user');
60+
}
5861
// Compare sessionIDs in most recent DocRef with sessionID in most recent SHL
5962
// let mostRecentDocRef = summaryDocRefs.sort((a, b) => b.date - a.date)[0];
60-
let mostRecentDocRef = summaryDocRefs[summaryDocRefs.length-1];
63+
let mostRecentDocRef = summaryDocRefs[0];
6164
// TODO: Get shl DocumentReferences from resourcesToReview
62-
let shlDocRefs: any[] = resourcesToReview.filter((r) => r.resourceType === "DocumentReference" && r.type?.coding[0]?.code === "34108-1").reverse();
65+
let shlDocRefs: any[] = resourcesToReview.filter((r) => r.resourceType === "DocumentReference" && r.type?.coding[0]?.code === "34108-1");
6366
6467
patientId = sofClient.getPatientID();
6568
sessionId = mostRecentDocRef.id;
@@ -109,18 +112,34 @@
109112
$shlStore.encryptionKey = shlData.encryptionKey;
110113
$shlStore.managementToken = shlData.managementToken;
111114
$shlStore.label = shlData.label;
112-
115+
$shlStore.files = [];
113116
found = true;
114117
break;
115118
}
116119
}
117120
118121
if (found) {
119122
console.log("Successfully retrieved SHL and Resources");
123+
if (mostRecentDocRef.id != $shlStore.sessionId) {
124+
console.log(`Most recent SHL ${$shlStore.id} doesn't match session ${$shlStore.sessionId}, updating SHL`);
125+
let deleted = await shlClient.deleteAllFiles($shlStore);
126+
let ips = createIpsPayload(patient, mostRecentDocRef);
127+
let shc = await packageShc(ips);
128+
$shlStore = await addFiles($shlStore, [shc]);
129+
let reportDate = new Date(mostRecentDocRef.date)
130+
.toLocaleDateString('en-US', {
131+
day: 'numeric',
132+
month: 'long',
133+
year: 'numeric'
134+
});
135+
let reportLabel = `Let's Talk Tech Choices Report (${reportDate})`;
136+
let result = await sofClient.postShl($shlStore, mostRecentDocRef, reportLabel);
137+
}
120138
// The current SHL is most recent, so use it
121139
shlReadyDispatch('shl-ready', true);
122140
} else if (mostRecentDocRef) {
123141
console.log(`Couldn't find FHIR record for SHL ${$shlStore.id} and session ${$shlStore.sessionId}, creating new SHL`);
142+
shlClient.deleteShl($shlStore);
124143
newShl(patient, mostRecentDocRef);
125144
} else {
126145
throw Error("No summary found for patient")

src/lib/managementClient.ts

+11
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,15 @@ export class SHLClient {
134134
const res = await req.json();
135135
return shl;
136136
}
137+
async deleteAllFiles(shl: SHLAdminParams) {
138+
const req = await fetch(`${API_BASE}/shl/${shl.id}/file`, {
139+
method: 'DELETE',
140+
headers: {
141+
authorization: `Bearer ${shl.managementToken}`
142+
},
143+
body: ""
144+
});
145+
const res = await req.json();
146+
return shl;
147+
}
137148
}

src/lib/sofClient.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export class SOFClient {
6767

6868
async requestResources(resourceType) {
6969
let self = this;
70-
let endpoint = (resourceType == 'Patient' ? 'Patient?identifier=' : `${resourceType}?subject.identifier=`) + this.getPatientID();
70+
let endpoint = (resourceType == 'Patient' ? 'Patient?identifier=' : `${resourceType}?_count=1000&_sort=-date&subject.identifier=`) + this.getPatientID();
7171
return this.client.request(endpoint, { flat: true }).then((result) => {
7272
let resourcesToPass = [];
7373
if (Array.isArray(result)) {

0 commit comments

Comments
 (0)