@ampath/esm-patient-registration-app 6.0.1-pre.24 → 6.0.1-pre.241

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.
Files changed (136) hide show
  1. package/.turbo/turbo-build.log +24 -23
  2. package/dist/132.js +1 -1
  3. package/dist/197.js +1 -1
  4. package/dist/236.js +1 -1
  5. package/dist/300.js +1 -1
  6. package/dist/335.js +1 -1
  7. package/dist/41.js +1 -1
  8. package/dist/41.js.map +1 -1
  9. package/dist/421.js +1 -0
  10. package/dist/421.js.map +1 -0
  11. package/dist/449.js +1 -0
  12. package/dist/449.js.map +1 -0
  13. package/dist/531.js +2 -0
  14. package/dist/531.js.LICENSE.txt +24 -0
  15. package/dist/531.js.map +1 -0
  16. package/dist/55.js +1 -1
  17. package/dist/652.js +1 -1
  18. package/dist/661.js +1 -1
  19. package/dist/757.js +1 -0
  20. package/dist/757.js.map +1 -0
  21. package/dist/813.js +1 -0
  22. package/dist/813.js.map +1 -0
  23. package/dist/828.js +1 -0
  24. package/dist/828.js.map +1 -0
  25. package/dist/830.js +1 -0
  26. package/dist/830.js.map +1 -0
  27. package/dist/831.js +1 -1
  28. package/dist/831.js.map +1 -1
  29. package/dist/879.js +1 -1
  30. package/dist/913.js +1 -1
  31. package/dist/913.js.LICENSE.txt +3 -3
  32. package/dist/913.js.map +1 -1
  33. package/dist/927.js +1 -0
  34. package/dist/927.js.map +1 -0
  35. package/dist/99.js +1 -1
  36. package/dist/ampath-esm-patient-registration-app.js +1 -1
  37. package/dist/ampath-esm-patient-registration-app.js.buildmanifest.json +204 -132
  38. package/dist/ampath-esm-patient-registration-app.js.map +1 -1
  39. package/dist/main.js +1 -1
  40. package/dist/main.js.LICENSE.txt +0 -32
  41. package/dist/main.js.map +1 -1
  42. package/dist/routes.json +1 -1
  43. package/package.json +7 -10
  44. package/src/config-schema.ts +19 -10
  45. package/src/index.ts +11 -4
  46. package/src/offline.resources.ts +13 -18
  47. package/src/offline.ts +6 -4
  48. package/src/patient-photo.extension.tsx +9 -0
  49. package/src/patient-registration/field/address/custom-address-field.component.tsx +1 -0
  50. package/src/patient-registration/field/custom-field.component.tsx +6 -0
  51. package/src/patient-registration/field/dob/dob.component.tsx +45 -49
  52. package/src/patient-registration/field/field.resource.ts +3 -3
  53. package/src/patient-registration/field/obs/obs-field.component.tsx +1 -1
  54. package/src/patient-registration/field/person-attributes/coded-person-attribute-field.component.tsx +4 -0
  55. package/src/patient-registration/field/person-attributes/custom-person-attribute-field.component.tsx +56 -0
  56. package/src/patient-registration/field/person-attributes/person-attribute-field.component.tsx +22 -7
  57. package/src/patient-registration/field/person-attributes/person-attributes.resource.ts +2 -2
  58. package/src/patient-registration/field/phone/phone-field.component.tsx +1 -0
  59. package/src/patient-registration/form-manager.ts +13 -6
  60. package/src/patient-registration/patient-registration-hooks.ts +133 -9
  61. package/src/patient-registration/patient-registration.component.tsx +55 -13
  62. package/src/patient-registration/{patient-registration.resource.test.tsx → patient-registration.resource.testt.tsx} +4 -4
  63. package/src/patient-registration/patient-registration.resource.ts +15 -75
  64. package/src/patient-registration/patient-registration.scss +0 -8
  65. package/src/patient-registration/patient-registration.types.ts +7 -1
  66. package/src/patient-registration/section/patient-relationships/relationships-section.component.tsx +5 -1
  67. package/src/patient-registration/section/patient-relationships/relationships.resource.tsx +2 -2
  68. package/src/patient-verification/assets/counties.json +236 -0
  69. package/src/patient-verification/assets/verification-assets.ts +11 -0
  70. package/src/patient-verification/patient-verification-hook.tsx +181 -0
  71. package/src/patient-verification/patient-verification-utils.ts +179 -0
  72. package/src/patient-verification/patient-verification.component.tsx +124 -0
  73. package/src/patient-verification/patient-verification.scss +25 -0
  74. package/src/patient-verification/verification-modal/confirm-prompt.component.tsx +72 -0
  75. package/src/patient-verification/verification-modal/empty-prompt.component.tsx +35 -0
  76. package/src/patient-verification/verification-types.ts +50 -0
  77. package/src/patient-verification-HIE/assets/counties.json +236 -0
  78. package/src/patient-verification-HIE/assets/verification-assets.ts +11 -0
  79. package/src/patient-verification-HIE/patient-verification-hook.tsx +181 -0
  80. package/src/patient-verification-HIE/patient-verification-utils.ts +179 -0
  81. package/src/patient-verification-HIE/patient-verification.component.tsx +124 -0
  82. package/src/patient-verification-HIE/patient-verification.scss +25 -0
  83. package/src/patient-verification-HIE/verification-modal/confirm-prompt.component.tsx +72 -0
  84. package/src/patient-verification-HIE/verification-modal/empty-prompt.component.tsx +35 -0
  85. package/src/patient-verification-HIE/verification-types.ts +50 -0
  86. package/src/routes.json +12 -3
  87. package/translations/am.json +26 -12
  88. package/translations/ar.json +26 -12
  89. package/translations/en.json +18 -4
  90. package/translations/es.json +10 -0
  91. package/translations/fr.json +6 -0
  92. package/translations/he.json +18 -0
  93. package/translations/km.json +18 -0
  94. package/translations/zh.json +30 -22
  95. package/translations/zh_CN.json +30 -22
  96. package/dist/229.js +0 -2
  97. package/dist/229.js.LICENSE.txt +0 -56
  98. package/dist/229.js.map +0 -1
  99. package/dist/537.js +0 -1
  100. package/dist/537.js.map +0 -1
  101. package/dist/56.js +0 -1
  102. package/dist/56.js.map +0 -1
  103. package/dist/885.js +0 -1
  104. package/dist/885.js.map +0 -1
  105. package/dist/918.js +0 -1
  106. package/dist/918.js.map +0 -1
  107. package/src/patient-registration/field/address/tests/address-hierarchy.test.tsx +0 -214
  108. package/src/patient-registration/field/address/tests/address-search-component.test.tsx +0 -135
  109. package/src/patient-registration/field/dob/dob.test.tsx +0 -75
  110. package/src/patient-registration/field/field.test.tsx +0 -294
  111. package/src/patient-registration/field/id/id-field.test.tsx +0 -107
  112. package/src/patient-registration/field/person-attributes/coded-attributes.component.tsx +0 -60
  113. package/src/patient-registration/field/person-attributes/coded-person-attribute-field.test.tsx +0 -127
  114. package/src/patient-registration/field/person-attributes/person-attribute-field.test.tsx +0 -187
  115. package/src/patient-registration/field/person-attributes/text-person-attribute-field.test.tsx +0 -88
  116. package/src/patient-registration/form-manager.test.ts +0 -67
  117. package/src/patient-registration/input/basic-input/select/select-input.test.tsx +0 -49
  118. package/src/patient-registration/input/custom-input/autosuggest/autosuggest.test.tsx +0 -132
  119. package/src/patient-registration/input/custom-input/identifier/identifier-input.test.tsx +0 -107
  120. package/src/patient-registration/patient-registration.test.tsx +0 -471
  121. package/src/patient-registration/section/death-info/death-info-section.test.tsx +0 -64
  122. package/src/patient-registration/section/demographics/demographics-section.test.tsx +0 -83
  123. package/src/patient-registration/section/patient-relationships/relationships-section.test.tsx +0 -100
  124. package/src/patient-verification/client-registry-constants.ts +0 -13
  125. package/src/patient-verification/client-registry.component.tsx +0 -66
  126. package/src/patient-verification/client-registry.scss +0 -1
  127. package/src/patient-verification/utils.tsx +0 -56
  128. package/src/patient-verification/verification-modal.scss +0 -20
  129. package/src/patient-verification/verification.component.tsx +0 -48
  130. package/src/root.test.tsx +0 -32
  131. package/src/widgets/cancel-patient-edit.test.tsx +0 -27
  132. package/src/widgets/display-photo.component.tsx +0 -30
  133. package/src/widgets/display-photo.test.tsx +0 -37
  134. package/src/widgets/edit-patient-details-button.test.tsx +0 -41
  135. /package/src/patient-registration/input/custom-input/identifier/{utils.test.ts → utils.testt.ts} +0 -0
  136. /package/src/widgets/{delete-identifier-confirmation-modal.test.tsx → delete-identifier-confirmation-modal.testt.tsx} +0 -0
@@ -0,0 +1,124 @@
1
+ import React, { useState } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { Tile, ComboBox, Layer, Button, Search, InlineLoading, InlineNotification } from '@carbon/react';
4
+ import styles from './patient-verification.scss';
5
+ import { countries, verificationIdentifierTypes } from './assets/verification-assets';
6
+ import { searchClientRegistry, useGlobalProperties } from './patient-verification-hook';
7
+ import { showSnackbar, showToast } from '@openmrs/esm-framework';
8
+ import { handleClientRegistryResponse } from './patient-verification-utils';
9
+ import { type FormikProps } from 'formik';
10
+ import { type FormValues } from '../patient-registration/patient-registration.types';
11
+
12
+ interface PatientVerificationProps {
13
+ props: FormikProps<FormValues>;
14
+ setInitialFormValues: React.Dispatch<FormValues>;
15
+ }
16
+
17
+ const PatientVerification: React.FC<PatientVerificationProps> = ({ props }) => {
18
+ const { t } = useTranslation();
19
+ const { data, isLoading, error } = useGlobalProperties();
20
+ const [verificationCriteria, setVerificationCriteria] = useState({
21
+ searchTerm: '',
22
+ identifierType: '',
23
+ countryCode: 'KE',
24
+ });
25
+ const [isLoadingSearch, setIsLoadingSearch] = useState(false);
26
+
27
+ const handleSearch = async () => {
28
+ setIsLoadingSearch(true);
29
+ try {
30
+ const clientRegistryResponse = await searchClientRegistry(
31
+ verificationCriteria.identifierType,
32
+ verificationCriteria.searchTerm,
33
+ props.values.token,
34
+ verificationCriteria.countryCode,
35
+ );
36
+ setIsLoadingSearch(false);
37
+
38
+ handleClientRegistryResponse(clientRegistryResponse, props, verificationCriteria.searchTerm);
39
+ } catch (error) {
40
+ showSnackbar({
41
+ title: 'Client registry error',
42
+ subtitle: `Please reload the registration page and re-try again, if the issue persist contact system administrator`,
43
+ timeoutInMs: 10000,
44
+ kind: 'error',
45
+ isLowContrast: true,
46
+ });
47
+ setIsLoadingSearch(false);
48
+ }
49
+ };
50
+
51
+ return (
52
+ <div id={'patientVerification'}>
53
+ <h3 className={styles.productiveHeading02} style={{ color: '#161616' }}>
54
+ {t('clientVerificationWithClientRegistry', 'Client verification with client registry')}
55
+ </h3>
56
+ <div style={{ margin: '1rem 0 1rem' }}>
57
+ <Layer>
58
+ {isLoading && <InlineLoading status="active" iconDescription="Loading" description="Loading data..." />}
59
+ </Layer>
60
+ {error && (
61
+ <InlineNotification
62
+ className={styles.errorWrapper}
63
+ aria-label="closes notification"
64
+ kind="error"
65
+ lowContrast
66
+ statusIconDescription="notification"
67
+ subtitle={t(
68
+ 'clientRegistryErrorSubtitle',
69
+ 'Please proceed with registration contact system admin and try again later',
70
+ )}
71
+ title={t('clientRegistryError', 'Error occurred while reaching the client registry')}
72
+ />
73
+ )}
74
+ <Tile className={styles.verificationWrapper}>
75
+ <Layer>
76
+ <ComboBox
77
+ ariaLabel={t('selectCountry', 'Select country')}
78
+ id="selectCountry"
79
+ items={countries}
80
+ itemToString={(item) => item?.name ?? ''}
81
+ label="Select country"
82
+ titleText={t('selectCountry', 'Select country')}
83
+ initialSelectedItem={countries[0]}
84
+ onChange={({ selectedItem }) =>
85
+ setVerificationCriteria({ ...verificationCriteria, countryCode: selectedItem?.initials })
86
+ }
87
+ />
88
+ </Layer>
89
+ <Layer>
90
+ <ComboBox
91
+ ariaLabel={t('selectIdentifierType', 'Select identifier type')}
92
+ id="selectIdentifierType"
93
+ items={verificationIdentifierTypes}
94
+ itemToString={(item) => item?.name ?? ''}
95
+ label="Select identifier type"
96
+ titleText={t('selectIdentifierType', 'Select identifier type')}
97
+ onChange={({ selectedItem }) =>
98
+ setVerificationCriteria({ ...verificationCriteria, identifierType: selectedItem?.value })
99
+ }
100
+ />
101
+ </Layer>
102
+ <Layer>
103
+ <Search
104
+ id="clientRegistrySearch"
105
+ autoFocus
106
+ placeHolderText={t('searchClientRegistry', 'Search client registry')}
107
+ disabled={!verificationCriteria.identifierType}
108
+ onChange={(event) => setVerificationCriteria({ ...verificationCriteria, searchTerm: event.target.value })}
109
+ />
110
+ </Layer>
111
+ {!isLoadingSearch ? (
112
+ <Button disabled={!verificationCriteria.identifierType && !isLoading} size="md" onClick={handleSearch}>
113
+ {t('validate', 'Validate')}
114
+ </Button>
115
+ ) : (
116
+ <InlineLoading status="active" iconDescription="Loading" description="Searching client registry" />
117
+ )}
118
+ </Tile>
119
+ </div>
120
+ </div>
121
+ );
122
+ };
123
+
124
+ export default PatientVerification;
@@ -0,0 +1,25 @@
1
+ @use '@carbon/colors';
2
+ @import '../patient-registration/patient-registration.scss';
3
+
4
+ /* Desktop */
5
+ :global(.omrs-breakpoint-gt-tablet) {
6
+ .verificationWrapper {
7
+ display: grid;
8
+ grid-template-columns: 1fr 1fr 1fr 1fr;
9
+ column-gap: 0.325rem;
10
+ align-items: flex-end;
11
+ }
12
+ }
13
+
14
+ /* Tablet */
15
+ :global(.omrs-breakpoint-lt-desktop) {
16
+ .verificationWrapper {
17
+ row-gap: 0.5rem;
18
+ display: flex;
19
+ flex-direction: column;
20
+ }
21
+ }
22
+
23
+ .errorWrapper {
24
+ margin: 0 0 1rem 0;
25
+ }
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { Button } from '@carbon/react';
4
+ import { age, ExtensionSlot, formatDate } from '@openmrs/esm-framework';
5
+ import capitalize from 'lodash-es/capitalize';
6
+ import { useFacilityName } from '../patient-verification-hook';
7
+
8
+ const PatientInfo: React.FC<{ label: string; value: string }> = ({ label, value }) => {
9
+ return (
10
+ <div style={{ display: 'grid', gridTemplateColumns: '0.25fr 0.75fr', margin: '0.25rem' }}>
11
+ <span style={{ minWidth: '5rem', fontWeight: 'bold' }}>{label}</span>
12
+ <span>{value}</span>
13
+ </div>
14
+ );
15
+ };
16
+
17
+ interface ConfirmPromptProps {
18
+ onConfirm: void;
19
+ close: void;
20
+ patient: any;
21
+ }
22
+
23
+ const ConfirmPrompt: React.FC<ConfirmPromptProps> = ({ close, onConfirm, patient }) => {
24
+ const { t } = useTranslation();
25
+ return (
26
+ <>
27
+ <div className="cds--modal-header">
28
+ <h3 className="cds--modal-header__heading">
29
+ {t('clientRegistryEmpty', `Patient ${patient?.firstName} ${patient?.lastName} found`)}
30
+ </h3>
31
+ </div>
32
+ <div className="cds--modal-content">
33
+ <p>
34
+ {t(
35
+ 'patientDetailsFound',
36
+ 'Patient information found in the registry, do you want to use the information to continue with registration?',
37
+ )}
38
+ </p>
39
+ <div style={{ display: 'flex', margin: '1rem' }}>
40
+ <ExtensionSlot
41
+ style={{ display: 'flex', alignItems: 'center' }}
42
+ name="patient-photo-slot"
43
+ state={{ patientName: `${patient?.firstName} ${patient?.lastName}` }}
44
+ />
45
+ <div style={{ width: '100%', marginLeft: '0.625rem' }}>
46
+ <PatientInfo
47
+ label={t('patientName', 'Patient name')}
48
+ value={`${patient?.firstName} ${patient?.lastName}`}
49
+ />
50
+ <PatientInfo
51
+ label={t('nationalId', 'National ID')}
52
+ value={patient?.identifications[0]?.identificationNumber}
53
+ />
54
+ <PatientInfo label={t('age', 'Age')} value={age(patient?.dateOfBirth)} />
55
+ <PatientInfo label={t('dateOfBirth', 'Date of birth')} value={formatDate(new Date(patient?.dateOfBirth))} />
56
+ <PatientInfo label={t('gender', 'Gender')} value={capitalize(patient?.gender)} />
57
+ <PatientInfo label={t('nupi', 'NUPI')} value={patient?.clientNumber} />
58
+ <PatientInfo label={t('shaNumber', 'SHA Number')} value={'--'} />
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div className="cds--modal-footer">
63
+ <Button kind="secondary" onClick={close}>
64
+ {t('cancel', 'Cancel')}
65
+ </Button>
66
+ <Button onClick={onConfirm}>{t('useValues', 'Use values')}</Button>
67
+ </div>
68
+ </>
69
+ );
70
+ };
71
+
72
+ export default ConfirmPrompt;
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { Button } from '@carbon/react';
4
+
5
+ interface EmptyPromptProps {
6
+ onConfirm: void;
7
+ close: void;
8
+ }
9
+
10
+ const EmptyPrompt: React.FC<EmptyPromptProps> = ({ close, onConfirm }) => {
11
+ const { t } = useTranslation();
12
+ return (
13
+ <>
14
+ <div className="cds--modal-header">
15
+ <h3 className="cds--modal-header__heading">{t('clientRegistryEmpty', 'Create & Post Patient')}</h3>
16
+ </div>
17
+ <div className="cds--modal-content">
18
+ <p>
19
+ {t(
20
+ 'patientNotFound',
21
+ 'The patient records could not be found in Client registry, do you want to continue to create and post patient to registry',
22
+ )}
23
+ </p>
24
+ </div>
25
+ <div className="cds--modal-footer">
26
+ <Button kind="secondary" onClick={close}>
27
+ {t('cancel', 'Cancel')}
28
+ </Button>
29
+ <Button onClick={onConfirm}>{t('continue', 'Continue to registration')}</Button>
30
+ </div>
31
+ </>
32
+ );
33
+ };
34
+
35
+ export default EmptyPrompt;
@@ -0,0 +1,50 @@
1
+ export interface ClientIdentification {
2
+ identificationType: string;
3
+ identificationNumber: string;
4
+ }
5
+
6
+ interface ClientContact {
7
+ primaryPhone: string;
8
+ secondaryPhone?: string;
9
+ emailAddress?: string;
10
+ }
11
+
12
+ export interface ClientRegistryPatient {
13
+ clientExists: boolean;
14
+ client?: RegistryPatient;
15
+ }
16
+
17
+ export interface RegistryPatient {
18
+ clientNumber?: string;
19
+ firstName: string;
20
+ middleName: string;
21
+ lastName: string;
22
+ dateOfBirth: string;
23
+ maritalStatus?: string;
24
+ gender: string;
25
+ occupation?: string;
26
+ religion?: string;
27
+ educationLevel?: string;
28
+ country: string;
29
+ countyOfBirth?: string;
30
+ isAlive: boolean;
31
+ originFacilityKmflCode?: string;
32
+ isOnART?: string;
33
+ nascopCCCNumber?: string;
34
+ residence: {
35
+ county: string;
36
+ subCounty: string;
37
+ ward: string;
38
+ village: string;
39
+ landmark: string;
40
+ address: string;
41
+ };
42
+ identifications: Array<ClientIdentification>;
43
+ contact: ClientContact;
44
+ nextOfKins: Array<{
45
+ name: string;
46
+ relationship: string;
47
+ residence: string;
48
+ contact: ClientContact;
49
+ }>;
50
+ }
@@ -0,0 +1,236 @@
1
+ [
2
+ {
3
+ "name": "Mombasa",
4
+ "code": 1,
5
+ "capital": "Mombasa City"
6
+ },
7
+ {
8
+ "name": "Kwale",
9
+ "code": 2,
10
+ "capital": "Kwale"
11
+ },
12
+ {
13
+ "name": "Kilifi",
14
+ "code": 3,
15
+ "capital": "Kilifi"
16
+ },
17
+ {
18
+ "name": "Tana River",
19
+ "code": 4,
20
+ "capital": "Hola"
21
+ },
22
+ {
23
+ "name": "Lamu",
24
+ "code": 5,
25
+ "capital": "Lamu"
26
+ },
27
+ {
28
+ "name": "Taita taveta",
29
+ "code": 6,
30
+ "capital": "Voi"
31
+ },
32
+ {
33
+ "name": "Garissa",
34
+ "code": 7,
35
+ "capital": "Garissa"
36
+ },
37
+ {
38
+ "name": "Wajir",
39
+ "code": 8,
40
+ "capital": "Wajir"
41
+ },
42
+ {
43
+ "name": "Mandera",
44
+ "code": 9,
45
+ "capital": "Mandera"
46
+ },
47
+ {
48
+ "name": "Marsabit",
49
+ "code": 10,
50
+ "capital": "Marsabit"
51
+ },
52
+ {
53
+ "name": "Isiolo",
54
+ "code": 11,
55
+ "capital": "Isiolo"
56
+ },
57
+ {
58
+ "name": "Meru",
59
+ "code": 12,
60
+ "capital": "Meru"
61
+ },
62
+ {
63
+ "name": "Tharaka nithi",
64
+ "code": 13,
65
+ "capital": "Chuka"
66
+ },
67
+ {
68
+ "name": "Embu",
69
+ "code": 14,
70
+ "capital": "Embu"
71
+ },
72
+ {
73
+ "name": "Kitui",
74
+ "code": 15,
75
+ "capital": "Kitui"
76
+ },
77
+ {
78
+ "name": "Machakos",
79
+ "code": 16,
80
+ "capital": "Machakos"
81
+ },
82
+ {
83
+ "name": "Makueni",
84
+ "code": 17,
85
+ "capital": "Wote"
86
+ },
87
+ {
88
+ "name": "Nyandarua",
89
+ "code": 18,
90
+ "capital": "Ol Kalou"
91
+ },
92
+ {
93
+ "name": "Nyeri",
94
+ "code": 19,
95
+ "capital": "Nyeri"
96
+ },
97
+ {
98
+ "name": "Kirinyaga",
99
+ "code": 20,
100
+ "capital": "Kerugoya/Kutus"
101
+ },
102
+ {
103
+ "name": "Murang'a",
104
+ "code": 21,
105
+ "capital": "Murang'a"
106
+ },
107
+ {
108
+ "name": "Kiambu",
109
+ "code": 22,
110
+ "capital": "Kiambu"
111
+ },
112
+ {
113
+ "name": "Turkana",
114
+ "code": 23,
115
+ "capital": "Lodwar"
116
+ },
117
+ {
118
+ "name": "West pokot",
119
+ "code": 24,
120
+ "capital": "Kapenguria"
121
+ },
122
+ {
123
+ "name": "Samburu",
124
+ "code": 25,
125
+ "capital": "Maralal"
126
+ },
127
+ {
128
+ "name": "Trans nzoia",
129
+ "code": 26,
130
+ "capital": "Kitale"
131
+ },
132
+ {
133
+ "name": "Uasin gishu",
134
+ "code": 27,
135
+ "capital": "Eldoret"
136
+ },
137
+ {
138
+ "name": "Elgeyo marakwet",
139
+ "code": 28,
140
+ "capital": "Iten"
141
+ },
142
+ {
143
+ "name": "Nandi",
144
+ "code": 29,
145
+ "capital": "Kapsabet"
146
+ },
147
+ {
148
+ "name": "Baringo",
149
+ "code": 30,
150
+ "capital": "Kabarnet"
151
+ },
152
+ {
153
+ "name": "Laikipia",
154
+ "code": 31,
155
+ "capital": "Rumuruti"
156
+ },
157
+ {
158
+ "name": "Nakuru",
159
+ "code": 32,
160
+ "capital": "Nakuru"
161
+ },
162
+ {
163
+ "name": "Narok",
164
+ "code": 33,
165
+ "capital": "Narok"
166
+ },
167
+ {
168
+ "name": "Kajiado",
169
+ "code": 34
170
+ },
171
+ {
172
+ "name": "Kericho",
173
+ "code": 35,
174
+ "capital": "Kericho"
175
+ },
176
+ {
177
+ "name": "Bomet",
178
+ "code": 36,
179
+ "capital": "Bomet"
180
+ },
181
+ {
182
+ "name": "Kakamega",
183
+ "code": 37,
184
+ "capital": "Kakamega"
185
+ },
186
+ {
187
+ "name": "Vihiga",
188
+ "code": 38,
189
+ "capital": "Vihiga"
190
+ },
191
+ {
192
+ "name": "Bungoma",
193
+ "code": 39,
194
+ "capital": "Bungoma"
195
+ },
196
+ {
197
+ "name": "Busia",
198
+ "code": 40,
199
+ "capital": "Busia"
200
+ },
201
+ {
202
+ "name": "Siaya",
203
+ "code": 41,
204
+ "capital": "Siaya"
205
+ },
206
+ {
207
+ "name": "Kisumu",
208
+ "code": 42,
209
+ "capital": "Kisumu"
210
+ },
211
+ {
212
+ "name": "Homa bay",
213
+ "code": 43,
214
+ "capital": "Homa Bay"
215
+ },
216
+ {
217
+ "name": "Migori",
218
+ "code": 44,
219
+ "capital": "Migori"
220
+ },
221
+ {
222
+ "name": "Kisii",
223
+ "code": 45,
224
+ "capital": "Kisii"
225
+ },
226
+ {
227
+ "name": "Nyamira",
228
+ "code": 46,
229
+ "capital": "Nyamira"
230
+ },
231
+ {
232
+ "name": "Nairobi",
233
+ "code": 47,
234
+ "capital": "Nairobi City"
235
+ }
236
+ ]
@@ -0,0 +1,11 @@
1
+ export const countries = [
2
+ { name: 'Kenya', initials: 'KE' },
3
+ { name: 'Uganda', initials: 'UG' },
4
+ { name: 'Tanzania', initials: 'TZ' },
5
+ ];
6
+
7
+ export const verificationIdentifierTypes = [
8
+ { name: 'National ID', value: 'national-id' },
9
+ { name: 'Passport', value: 'passport' },
10
+ { name: 'Birth certificate number', value: 'birth-certificate' },
11
+ ];