oro-sdk 3.1.2 → 3.2.0
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/LICENSE +21 -0
- package/dist/helpers/patient-registration.d.ts +17 -1
- package/dist/oro-sdk.cjs.development.js +1151 -610
- package/dist/oro-sdk.cjs.development.js.map +1 -1
- package/dist/oro-sdk.cjs.production.min.js +1 -1
- package/dist/oro-sdk.cjs.production.min.js.map +1 -1
- package/dist/oro-sdk.esm.js +1150 -611
- package/dist/oro-sdk.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/helpers/patient-registration.ts +92 -0
package/package.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"version": "3.
|
2
|
+
"version": "3.2.0",
|
3
3
|
"main": "dist/index.js",
|
4
4
|
"typings": "dist/index.d.ts",
|
5
5
|
"files": [
|
@@ -54,8 +54,8 @@
|
|
54
54
|
"form-data": "^4.0.0",
|
55
55
|
"formdata-node": "^4.3.1",
|
56
56
|
"idb-keyval": "^5.0.6",
|
57
|
-
"oro-sdk-apis": "1.
|
57
|
+
"oro-sdk-apis": "1.39.1",
|
58
58
|
"oro-toolbox": "0.0.6",
|
59
59
|
"uuid": "^8.3.2"
|
60
60
|
}
|
61
|
-
}
|
61
|
+
}
|
@@ -10,9 +10,12 @@ import {
|
|
10
10
|
MedicalStatus,
|
11
11
|
MetadataCategory,
|
12
12
|
PersonalMeta,
|
13
|
+
PopulatedWorkflowData,
|
13
14
|
Practitioner,
|
14
15
|
PreferenceMeta,
|
15
16
|
RawConsultationMeta,
|
17
|
+
Term,
|
18
|
+
Terms,
|
16
19
|
Uuid,
|
17
20
|
VaultIndex,
|
18
21
|
WorkflowData,
|
@@ -21,8 +24,10 @@ import {
|
|
21
24
|
filterTriggeredAnsweredWithKind,
|
22
25
|
getImagesFromIndexDb,
|
23
26
|
getWorkflowDataByCategory,
|
27
|
+
identificationToPersonalInformations,
|
24
28
|
OroClient,
|
25
29
|
RegisterPatientOutput,
|
30
|
+
toActualObject
|
26
31
|
} from '..'
|
27
32
|
|
28
33
|
const MAX_RETRIES = 15
|
@@ -179,6 +184,12 @@ export async function registerPatient(
|
|
179
184
|
|
180
185
|
await Promise.all([...grantPromises, ...consultIndexPromises])
|
181
186
|
|
187
|
+
await buildConsultSearchIndex(consult.uuid, workflow, oroClient).catch((err) => {
|
188
|
+
console.error('[SDK: registration] personal information not found or another error occured during search indexing', err)
|
189
|
+
if(retry <= 1) return // this statement is to avoid failing the registration due to the failure in search indexing the consult, this practically implements a soft retry
|
190
|
+
errorsThrown.push(err)
|
191
|
+
})
|
192
|
+
|
182
193
|
if (errorsThrown.length > 0)
|
183
194
|
throw errorsThrown
|
184
195
|
|
@@ -399,3 +410,84 @@ export async function extractAndStorePersonalWorkflowData(
|
|
399
410
|
)
|
400
411
|
})
|
401
412
|
}
|
413
|
+
|
414
|
+
/**
|
415
|
+
* Given workflow data, it populates it with Personal, ChildPersonal, and OtherPersonal workflow data
|
416
|
+
* @param workflow
|
417
|
+
*/
|
418
|
+
export async function extractPersonalInfoFromWorkflowData(workflow: WorkflowData): Promise<{
|
419
|
+
personalInfoPopulatedWfData: PopulatedWorkflowData,
|
420
|
+
childPersonalInfoPopulatedWfData: PopulatedWorkflowData,
|
421
|
+
otherPersonalInfoPopulatedWfData: PopulatedWorkflowData,
|
422
|
+
}> {
|
423
|
+
return Promise.all([
|
424
|
+
getWorkflowDataByCategory(workflow, MetadataCategory.Personal),
|
425
|
+
getWorkflowDataByCategory(workflow, MetadataCategory.ChildPersonal),
|
426
|
+
getWorkflowDataByCategory(workflow, MetadataCategory.OtherPersonal)
|
427
|
+
]).then(([personalInfoPopulatedWfData, childPersonalInfoPopulatedWfData, otherPersonalInfoPopulatedWfData]) => {
|
428
|
+
return {
|
429
|
+
personalInfoPopulatedWfData,
|
430
|
+
childPersonalInfoPopulatedWfData,
|
431
|
+
otherPersonalInfoPopulatedWfData,
|
432
|
+
}
|
433
|
+
})
|
434
|
+
}
|
435
|
+
|
436
|
+
/**
|
437
|
+
* Creates the search index for the first and last name of the given consultation
|
438
|
+
* @param consultUuid the uuid of the consult to be search indexed
|
439
|
+
* @param workflow the workflow data
|
440
|
+
* @param oroClient
|
441
|
+
*/
|
442
|
+
export async function buildConsultSearchIndex(consultUuid: string, workflow: WorkflowData, oroClient: OroClient) {
|
443
|
+
let terms: Terms = []
|
444
|
+
|
445
|
+
const {
|
446
|
+
personalInfoPopulatedWfData,
|
447
|
+
childPersonalInfoPopulatedWfData,
|
448
|
+
otherPersonalInfoPopulatedWfData
|
449
|
+
} = await extractPersonalInfoFromWorkflowData(workflow)
|
450
|
+
|
451
|
+
const personalInfo = identificationToPersonalInformations(
|
452
|
+
toActualObject(personalInfoPopulatedWfData),
|
453
|
+
MetadataCategory.Personal
|
454
|
+
)
|
455
|
+
const childPersonalInfo = identificationToPersonalInformations(
|
456
|
+
toActualObject(childPersonalInfoPopulatedWfData),
|
457
|
+
MetadataCategory.ChildPersonal
|
458
|
+
)
|
459
|
+
const otherPersonalInfo = identificationToPersonalInformations(
|
460
|
+
toActualObject(otherPersonalInfoPopulatedWfData),
|
461
|
+
MetadataCategory.OtherPersonal
|
462
|
+
)
|
463
|
+
|
464
|
+
terms.push(<Term>{
|
465
|
+
kind: 'first-name',
|
466
|
+
value: personalInfo.firstname,
|
467
|
+
}, <Term> {
|
468
|
+
kind: 'last-name',
|
469
|
+
value: personalInfo.name
|
470
|
+
})
|
471
|
+
|
472
|
+
if(childPersonalInfo.firstname && childPersonalInfo.name) {
|
473
|
+
terms.push(<Term>{
|
474
|
+
kind: 'first-name',
|
475
|
+
value: childPersonalInfo.firstname,
|
476
|
+
}, <Term> {
|
477
|
+
kind: 'last-name',
|
478
|
+
value: childPersonalInfo.name
|
479
|
+
})
|
480
|
+
}
|
481
|
+
|
482
|
+
if(otherPersonalInfo.firstname && otherPersonalInfo.name) {
|
483
|
+
terms.push(<Term>{
|
484
|
+
kind: 'first-name',
|
485
|
+
value: otherPersonalInfo.firstname,
|
486
|
+
}, <Term> {
|
487
|
+
kind: 'last-name',
|
488
|
+
value: otherPersonalInfo.name
|
489
|
+
})
|
490
|
+
}
|
491
|
+
|
492
|
+
await oroClient.searchClient.index(consultUuid, terms)
|
493
|
+
}
|