oro-sdk 3.1.1 → 3.1.2-dev2.1

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.1.1",
2
+ "version": "3.1.2-dev2.1",
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.38.1",
57
+ "oro-sdk-apis": "1.38.2",
58
58
  "oro-toolbox": "0.0.6",
59
59
  "uuid": "^8.3.2"
60
60
  }
61
- }
61
+ }
@@ -5,14 +5,14 @@ import {
5
5
  ConsultRequest,
6
6
  DocumentType,
7
7
  IdentityResponse,
8
- IndexKey,
8
+ IndexKey, LocalizedData,
9
9
  MedicalMeta,
10
10
  MedicalStatus,
11
11
  MetadataCategory,
12
- PersonalMeta,
12
+ PersonalMeta, PopulatedWorkflowData,
13
13
  Practitioner,
14
14
  PreferenceMeta,
15
- RawConsultationMeta,
15
+ RawConsultationMeta, Term, Terms,
16
16
  Uuid,
17
17
  VaultIndex,
18
18
  WorkflowData,
@@ -20,9 +20,9 @@ import {
20
20
  import {
21
21
  filterTriggeredAnsweredWithKind,
22
22
  getImagesFromIndexDb,
23
- getWorkflowDataByCategory,
23
+ getWorkflowDataByCategory, identificationToPersonalInformations,
24
24
  OroClient,
25
- RegisterPatientOutput,
25
+ RegisterPatientOutput, toActualObject,
26
26
  } from '..'
27
27
 
28
28
  const MAX_RETRIES = 15
@@ -187,6 +187,11 @@ export async function registerPatient(
187
187
  statusMedical: MedicalStatus.New,
188
188
  })
189
189
 
190
+ await searchIndexConsultation(consult.uuid, oroClient).catch((err) => {
191
+ console.error('[SDK: registration] personal information not found or another error occured during search indexing', err)
192
+ errorsThrown.push(err)
193
+ })
194
+
190
195
  // if we got through the complete flow, the registration succeeded
191
196
  break
192
197
  } catch (err) {
@@ -399,3 +404,124 @@ export async function extractAndStorePersonalWorkflowData(
399
404
  )
400
405
  })
401
406
  }
407
+
408
+ export async function extractPersonalInfoFromConsultId(consultUuid: string, oroClient: OroClient): Promise<{
409
+ consultUuid: string,
410
+ personalInformations: LocalizedData<PopulatedWorkflowData>,
411
+ childPersonalInformations: LocalizedData<PopulatedWorkflowData>,
412
+ otherPersonalInformations: LocalizedData<PopulatedWorkflowData>,
413
+ }> {
414
+ return Promise.all([
415
+ // Retrieve MetadataCategory.Personal in any case
416
+ oroClient
417
+ .getPersonalInformationsFromConsultId(consultUuid, MetadataCategory.Personal, true)
418
+ .then((personalInformations) => {
419
+ if (!personalInformations[0]) {
420
+ console.error(
421
+ `${MetadataCategory.Personal} informations not found for consult:`,
422
+ consultUuid
423
+ )
424
+
425
+ throw Error('No self personal information found')
426
+ }
427
+
428
+ return personalInformations[0]
429
+ }),
430
+ // Retrieve MetadataCategory.ChildPersonal in any case in parallel
431
+ oroClient
432
+ .getPersonalInformationsFromConsultId(consultUuid, MetadataCategory.ChildPersonal, true)
433
+ .then((childInformations): any => {
434
+ if (!childInformations[0]) {
435
+ console.debug(
436
+ `${MetadataCategory.ChildPersonal} informations not found for consult:`,
437
+ consultUuid
438
+ )
439
+
440
+ // Retrieve MetadataCategory.OtherPersonal only if MetadataCategory.ChildPersonal does not exist
441
+ return oroClient
442
+ .getPersonalInformationsFromConsultId(
443
+ consultUuid,
444
+ MetadataCategory.OtherPersonal,
445
+ true
446
+ )
447
+ .then((otherInformations) => {
448
+ if (!otherInformations[0]) {
449
+ console.debug(
450
+ `${MetadataCategory.OtherPersonal} informations not found for consult:`,
451
+ consultUuid
452
+ )
453
+
454
+ return {}
455
+ }
456
+
457
+ return { otherPersonalInformations: otherInformations[0] }
458
+ })
459
+ }
460
+
461
+ return { childPersonalInformations: childInformations[0] }
462
+ }),
463
+ ]).then(([personalInformations, { childPersonalInformations, otherPersonalInformations }]) => {
464
+ return {
465
+ consultUuid,
466
+ personalInformations,
467
+ childPersonalInformations,
468
+ otherPersonalInformations,
469
+ }
470
+ })
471
+ }
472
+
473
+ export async function searchIndexConsultation(consultUuid: string, oroClient: OroClient) {
474
+ let terms: Terms = []
475
+
476
+ console.log('here')
477
+
478
+ const {
479
+ personalInformations,
480
+ childPersonalInformations,
481
+ otherPersonalInformations
482
+ } = await extractPersonalInfoFromConsultId(consultUuid, oroClient)
483
+
484
+ console.log('personal=', personalInformations, 'child=', childPersonalInformations, 'other=', otherPersonalInformations)
485
+
486
+ const personalInfo = identificationToPersonalInformations(
487
+ toActualObject(personalInformations.data),
488
+ MetadataCategory.Personal
489
+ )
490
+ terms.push(<Term>{
491
+ kind: 'first-name',
492
+ value: personalInfo.firstname,
493
+ }, <Term> {
494
+ kind: 'last-name',
495
+ value: personalInfo.name
496
+ })
497
+
498
+ if(childPersonalInformations) {
499
+ const childPersonalInfo = identificationToPersonalInformations(
500
+ toActualObject(childPersonalInformations.data),
501
+ MetadataCategory.ChildPersonal
502
+ )
503
+ terms.push(<Term>{
504
+ kind: 'first-name',
505
+ value: childPersonalInfo.firstname,
506
+ }, <Term> {
507
+ kind: 'last-name',
508
+ value: childPersonalInfo.name
509
+ })
510
+ }
511
+
512
+ if(otherPersonalInformations) {
513
+ const otherPersonalInfo = identificationToPersonalInformations(
514
+ toActualObject(otherPersonalInformations.data),
515
+ MetadataCategory.OtherPersonal
516
+ )
517
+ terms.push(<Term>{
518
+ kind: 'first-name',
519
+ value: otherPersonalInfo.firstname,
520
+ }, <Term> {
521
+ kind: 'last-name',
522
+ value: otherPersonalInfo.name
523
+ })
524
+ }
525
+
526
+ await oroClient.searchClient.index(consultUuid, terms)
527
+ }