|
1 | 1 | // Prefetch Template Source: |
2 | 2 | // https://build.fhir.org/ig/HL7/davinci-crd/hooks.html#prefetch |
3 | 3 | export class PrefetchTemplate { |
4 | | -static generatePrefetchMap(includePharmacy = true, pharmacyId = 'pharm0111') { |
| 4 | + static generatePrefetchMap(includePharmacy = true, pharmacyId = 'pharm0111') { |
5 | 5 | const prefetchMap = new Map(); |
6 | 6 |
|
7 | 7 | const PRACTITIONER_PREFETCH = new PrefetchTemplate('{{context.userId}}'); |
@@ -51,36 +51,48 @@ static generatePrefetchMap(includePharmacy = true, pharmacyId = 'pharm0111') { |
51 | 51 | return paramElementMap; |
52 | 52 | } |
53 | 53 |
|
54 | | - static generateQueries(requestBundle, patientReference, userReference, pharmacyId, ...prefetchKeys) { |
55 | | - var resolvedQueries = new Map(); |
56 | | - for (var i = 0; i < prefetchKeys.length; i++) { |
57 | | - var prefetchKey = prefetchKeys[i]; |
58 | | - var query = prefetchMap.get(prefetchKey).getQuery(); |
| 54 | + static generateQueries( |
| 55 | + requestBundle, |
| 56 | + patientReference, |
| 57 | + userReference, |
| 58 | + pharmacyId, |
| 59 | + ...prefetchKeys |
| 60 | + ) { |
| 61 | + var resolvedQueries = new Map(); |
| 62 | + for (var i = 0; i < prefetchKeys.length; i++) { |
| 63 | + var prefetchKey = prefetchKeys[i]; |
| 64 | + var query = prefetchMap.get(prefetchKey).getQuery(); |
59 | 65 | // Regex source: https://regexland.com/all-between-specified-characters/ |
60 | | - var parametersToFill = query.match(/(?<={{).*?(?=}})/gs); |
61 | | - var resolvedQuery = query.slice(); |
62 | | - if (parametersToFill) { |
63 | | - for (var j = 0; j < parametersToFill.length; j++) { |
64 | | - var unresolvedParameter = parametersToFill[j]; |
65 | | - var resolvedParameter; |
66 | | - if (requestBundle) { |
67 | | - resolvedParameter = PrefetchTemplate.resolveParameter(unresolvedParameter, requestBundle); |
68 | | - } else { |
69 | | - if (unresolvedParameter === 'context.patientId') { |
70 | | - resolvedParameter = patientReference; |
71 | | - } else if (unresolvedParameter === 'context.userId') { |
72 | | - resolvedParameter = userReference; |
73 | | - } |
74 | | - } |
75 | | - if (resolvedParameter) { |
76 | | - resolvedQuery = resolvedQuery.replace('{{' + unresolvedParameter + '}}', resolvedParameter); |
| 66 | + var parametersToFill = query.match(/(?<={{).*?(?=}})/gs); |
| 67 | + var resolvedQuery = query.slice(); |
| 68 | + if (parametersToFill) { |
| 69 | + for (var j = 0; j < parametersToFill.length; j++) { |
| 70 | + var unresolvedParameter = parametersToFill[j]; |
| 71 | + var resolvedParameter; |
| 72 | + if (requestBundle) { |
| 73 | + resolvedParameter = PrefetchTemplate.resolveParameter( |
| 74 | + unresolvedParameter, |
| 75 | + requestBundle |
| 76 | + ); |
| 77 | + } else { |
| 78 | + if (unresolvedParameter === 'context.patientId') { |
| 79 | + resolvedParameter = patientReference; |
| 80 | + } else if (unresolvedParameter === 'context.userId') { |
| 81 | + resolvedParameter = userReference; |
| 82 | + } |
| 83 | + } |
| 84 | + if (resolvedParameter) { |
| 85 | + resolvedQuery = resolvedQuery.replace( |
| 86 | + '{{' + unresolvedParameter + '}}', |
| 87 | + resolvedParameter |
| 88 | + ); |
| 89 | + } |
77 | 90 | } |
78 | 91 | } |
| 92 | + resolvedQueries.set(prefetchKey, resolvedQuery); |
79 | 93 | } |
80 | | - resolvedQueries.set(prefetchKey, resolvedQuery); |
| 94 | + return resolvedQueries; |
81 | 95 | } |
82 | | - return resolvedQueries; |
83 | | -} |
84 | 96 |
|
85 | 97 | // Source: https://www.tutorialspoint.com/accessing-nested-javascript-objects-with-string-key |
86 | 98 | static getProp(object, path) { |
|
0 commit comments