Skip to content

Commit 8a751ae

Browse files
committed
fix the prefetch bug
1 parent 89bfc8b commit 8a751ae

File tree

4 files changed

+44
-19
lines changed

4 files changed

+44
-19
lines changed

src/PrefetchTemplate.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class PrefetchTemplate {
1111
);
1212
const PATIENT_PREFETCH = new PrefetchTemplate('{{context.patientId}}');
1313

14-
const PHARMACY_PREFETCH = new PrefetchTemplate('Organization/pharm0111');
14+
const PHARMACY_PREFETCH = new PrefetchTemplate('Organization/{{context.pharmacyId}}');
1515

1616
const ALL_REQUESTS_PREFETCH = new PrefetchTemplate(
1717
'MedicationRequest?subject={{context.patientId}}&_include=MedicationRequest:medication'
@@ -52,32 +52,38 @@ export class PrefetchTemplate {
5252
return paramElementMap;
5353
}
5454

55-
static generateQueries(requestBundle, patientReference, userReference, ...prefetchKeys) {
56-
var resolvedQueries = new Map();
57-
for (var i = 0; i < prefetchKeys.length; i++) {
58-
var prefetchKey = prefetchKeys[i];
59-
var query = prefetchMap.get(prefetchKey).getQuery();
55+
static generateQueries(requestBundle, patientReference, userReference, pharmacyId, ...prefetchKeys) {
56+
var resolvedQueries = new Map();
57+
for (var i = 0; i < prefetchKeys.length; i++) {
58+
var prefetchKey = prefetchKeys[i];
59+
var query = prefetchMap.get(prefetchKey).getQuery();
6060
// Regex source: https://regexland.com/all-between-specified-characters/
61-
var parametersToFill = query.match(/(?<={{).*?(?=}})/gs);
62-
var resolvedQuery = query.slice();
61+
var parametersToFill = query.match(/(?<={{).*?(?=}})/gs);
62+
var resolvedQuery = query.slice();
6363
for (var j = 0; j < parametersToFill.length; j++) {
6464
var unresolvedParameter = parametersToFill[j];
6565
var resolvedParameter;
6666
if (requestBundle) {
67-
resolvedParameter = PrefetchTemplate.resolveParameter(unresolvedParameter, requestBundle);
67+
if (unresolvedParameter === 'context.pharmacyId') {
68+
resolvedParameter = pharmacyId;
69+
} else {
70+
resolvedParameter = PrefetchTemplate.resolveParameter(unresolvedParameter, requestBundle);
71+
}
6872
} else {
6973
if (unresolvedParameter === 'context.patientId') {
7074
resolvedParameter = patientReference;
7175
} else if (unresolvedParameter === 'context.userId') {
7276
resolvedParameter = userReference;
77+
} else if (unresolvedParameter === 'context.pharmacyId') {
78+
resolvedParameter = pharmacyId;
7379
}
7480
}
7581
resolvedQuery = resolvedQuery.replace('{{' + unresolvedParameter + '}}', resolvedParameter);
7682
}
77-
resolvedQueries.set(prefetchKey, resolvedQuery);
78-
}
79-
return resolvedQueries;
83+
resolvedQueries.set(prefetchKey, resolvedQuery);
8084
}
85+
return resolvedQueries;
86+
}
8187

8288
// Source: https://www.tutorialspoint.com/accessing-nested-javascript-objects-with-string-key
8389
static getProp(object, path) {

src/components/SMARTBox/PatientBox.jsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,27 @@ const PatientBox = props => {
167167
const fetchResources = queries => {
168168
let requests = [];
169169
callback('prefetchCompleted', false);
170+
console.log('🔍 PHARMACY DEBUG - All queries to fetch:', queries); // ADD THIS
171+
170172
queries.forEach((query, queryKey) => {
173+
console.log(`🔍 PHARMACY DEBUG - Processing ${queryKey}: ${query}`); // ADD THIS
171174
const urlQuery = '/' + query;
172175
requests.push(
173176
client
174177
.request(urlQuery)
175178
.then(response => {
176-
console.log(response);
179+
console.log(`🔍 PHARMACY DEBUG - SUCCESS for ${queryKey}:`, response); // ADD THIS
177180
return response;
178181
})
182+
.catch(error => {
183+
console.log(`🔍 PHARMACY DEBUG - FAILED for ${queryKey}:`, error); // ADD THIS
184+
return null; // Return null so Promise.all doesn't fail completely
185+
})
179186
.then(resource => {
180-
callbackMap('prefetchedResources', queryKey, resource);
187+
if (resource) {
188+
console.log(`🔍 PHARMACY DEBUG - Calling callbackMap for ${queryKey}`); // ADD THIS
189+
callbackMap('prefetchedResources', queryKey, resource);
190+
}
181191
})
182192
);
183193
});
@@ -202,9 +212,11 @@ const PatientBox = props => {
202212
request,
203213
patientReference,
204214
userReference,
215+
'pharm0111',
205216
'request',
206217
'patient',
207-
'practitioner'
218+
'practitioner',
219+
'pharmacy'
208220
);
209221
fetchResources(queries);
210222

@@ -218,9 +230,11 @@ const PatientBox = props => {
218230
request,
219231
patientReference,
220232
userReference,
233+
'pharm0111',
221234
'patient',
222235
'practitioner',
223-
'medicationRequests'
236+
'medicationRequests',
237+
'pharmacy'
224238
);
225239
fetchResources(queries);
226240
}

src/containers/RequestBuilder.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const RequestBuilder = props => {
4848
const displayRequestBox = !!globalState.patient?.id;
4949

5050
useEffect(() => {
51+
console.log('Prefetched Resources updated:');
5152
console.log(state.prefetchedResources);
5253
}, [state.prefetchedResources]);
5354

@@ -181,7 +182,8 @@ const RequestBuilder = props => {
181182
prefetch,
182183
globalState.sendPrefetch,
183184
hook,
184-
hookConfig
185+
hookConfig,
186+
'pharm0111'
185187
);
186188

187189
let baseUrl = globalState.baseUrl;

src/util/buildRequest.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ export default function buildRequest(
99
prefetch,
1010
includePrefetch,
1111
hook,
12-
hookConfig
12+
hookConfig,
13+
pharmacyId = 'pharm0111'
14+
1315
) {
1416
// Use the provided user if there is no request for this hook
1517
let userId = 'Practitioner/' + user;
@@ -31,7 +33,8 @@ export default function buildRequest(
3133
context: {
3234
userId: userId,
3335
patientId: patient.id,
34-
encounterId: 'enc89284'
36+
encounterId: 'enc89284',
37+
pharmacyId: pharmacyId
3538
}
3639
};
3740

0 commit comments

Comments
 (0)