@kenyaemr/esm-admin-app 5.4.4-pre.96 → 5.4.5-pre.16

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 (285) hide show
  1. package/package.json +3 -3
  2. package/src/components/confirm-modal/confirmation-operation.test.tsx +8 -19
  3. package/src/components/dashboard/dashboard.component.tsx +4 -1
  4. package/src/components/empty-state/empty-state-log.test.tsx +3 -4
  5. package/src/components/facility-setup/constant/index.ts +3 -0
  6. package/src/components/facility-setup/facility-info.component.tsx +177 -107
  7. package/src/components/facility-setup/facility-info.scss +39 -1
  8. package/src/components/facility-setup/facility-setup.component.tsx +2 -2
  9. package/src/components/facility-setup/type/index.ts +61 -0
  10. package/src/components/facility-setup/useFacilityRegistry.ts +29 -0
  11. package/src/components/global-property/dashboard/global-property-dashboard.component.tsx +23 -0
  12. package/src/components/global-property/dashboard/global-property-dashboard.scss +6 -0
  13. package/src/components/global-property/hooks/useGlobalProperty.ts +64 -0
  14. package/src/components/global-property/hooks/useLogoUpload.ts +28 -0
  15. package/src/components/global-property/index.ts +14 -0
  16. package/src/components/global-property/modal/delete-global-property-modal.component.tsx +71 -0
  17. package/src/components/global-property/modal/delete-global-property-modal.test.tsx +131 -0
  18. package/src/components/global-property/table/global-property-table.component.tsx +241 -0
  19. package/src/components/global-property/table/global-property-table.scss +44 -0
  20. package/src/components/global-property/table/global-property-table.test.tsx +202 -0
  21. package/src/components/global-property/workspace/global-property-form-schema.ts +32 -0
  22. package/src/components/global-property/workspace/global-property.workspace.scss +40 -0
  23. package/src/components/global-property/workspace/global-property.workspace.test.tsx +172 -0
  24. package/src/components/global-property/workspace/global-property.workspace.tsx +260 -0
  25. package/src/components/global-property/workspace/upload-logo.workspace.scss +61 -0
  26. package/src/components/global-property/workspace/upload-logo.workspace.test.tsx +180 -0
  27. package/src/components/global-property/workspace/upload-logo.workspace.tsx +191 -0
  28. package/src/components/hook/healthWorkerRegistry.ts +78 -0
  29. package/src/components/hook/useProfessionalRegistryEnums.ts +59 -0
  30. package/src/components/logs-table/operation-log-table.component.tsx +87 -75
  31. package/src/components/logs-table/operation-log.test.tsx +134 -28
  32. package/src/components/modal/hwr-confirmation.modal.scss +80 -4
  33. package/src/components/modal/hwr-confirmation.modal.tsx +118 -128
  34. package/src/components/modal/hwr-sync.modal.tsx +194 -106
  35. package/src/components/users/manage-users/manage-user-role-scope/user-role-scope-workspace/user-role-scope.workspace.tsx +1 -1
  36. package/src/components/users/manage-users/user-details/user-detail.scss +167 -39
  37. package/src/components/users/manage-users/user-details/user-details.component.tsx +130 -122
  38. package/src/components/users/manage-users/user-management.workspace.scss +233 -95
  39. package/src/components/users/manage-users/user-management.workspace.tsx +481 -375
  40. package/src/components/users/userManagementFormSchema.tsx +17 -8
  41. package/src/config-schema.ts +48 -68
  42. package/src/index.ts +21 -7
  43. package/src/left-pannel-link.component.tsx +5 -3
  44. package/src/root.component.tsx +2 -0
  45. package/src/routes.json +25 -1
  46. package/src/types/index.ts +11 -2
  47. package/translations/am.json +192 -10
  48. package/translations/en.json +205 -23
  49. package/translations/fr.json +260 -58
  50. package/translations/sw.json +329 -147
  51. package/.turbo/turbo-build.log +0 -6
  52. package/dist/1074.js +0 -1
  53. package/dist/1074.js.map +0 -1
  54. package/dist/12.js +0 -17
  55. package/dist/12.js.map +0 -1
  56. package/dist/1201.js +0 -1
  57. package/dist/1201.js.map +0 -1
  58. package/dist/1242.js +0 -1
  59. package/dist/1242.js.map +0 -1
  60. package/dist/1311.js +0 -1
  61. package/dist/1311.js.map +0 -1
  62. package/dist/1462.js +0 -1
  63. package/dist/1462.js.map +0 -1
  64. package/dist/1469.js +0 -1
  65. package/dist/1469.js.map +0 -1
  66. package/dist/1506.js +0 -13
  67. package/dist/1506.js.map +0 -1
  68. package/dist/1718.js +0 -1
  69. package/dist/1718.js.map +0 -1
  70. package/dist/1722.js +0 -1
  71. package/dist/1722.js.map +0 -1
  72. package/dist/1772.js +0 -1
  73. package/dist/1772.js.map +0 -1
  74. package/dist/1889.js +0 -1
  75. package/dist/1889.js.map +0 -1
  76. package/dist/1972.js +0 -1
  77. package/dist/1972.js.map +0 -1
  78. package/dist/1990.js +0 -1
  79. package/dist/1990.js.map +0 -1
  80. package/dist/2016.js +0 -1
  81. package/dist/2016.js.map +0 -1
  82. package/dist/2080.js +0 -1
  83. package/dist/2080.js.map +0 -1
  84. package/dist/2096.js +0 -1
  85. package/dist/2096.js.map +0 -1
  86. package/dist/2153.js +0 -1
  87. package/dist/2153.js.map +0 -1
  88. package/dist/216.js +0 -1
  89. package/dist/216.js.map +0 -1
  90. package/dist/2270.js +0 -1
  91. package/dist/2270.js.map +0 -1
  92. package/dist/2294.js +0 -1
  93. package/dist/2294.js.map +0 -1
  94. package/dist/2345.js +0 -1
  95. package/dist/2345.js.map +0 -1
  96. package/dist/2402.js +0 -1
  97. package/dist/2402.js.map +0 -1
  98. package/dist/2500.js +0 -1
  99. package/dist/2500.js.map +0 -1
  100. package/dist/251.js +0 -1
  101. package/dist/251.js.map +0 -1
  102. package/dist/257.js +0 -1
  103. package/dist/257.js.map +0 -1
  104. package/dist/2586.js +0 -1
  105. package/dist/2586.js.map +0 -1
  106. package/dist/2625.js +0 -1
  107. package/dist/2625.js.map +0 -1
  108. package/dist/2652.js +0 -1
  109. package/dist/2652.js.map +0 -1
  110. package/dist/2685.js +0 -1
  111. package/dist/2685.js.map +0 -1
  112. package/dist/2948.js +0 -1
  113. package/dist/2948.js.map +0 -1
  114. package/dist/3089.js +0 -1
  115. package/dist/3089.js.map +0 -1
  116. package/dist/3190.js +0 -1
  117. package/dist/3190.js.map +0 -1
  118. package/dist/3224.js +0 -1
  119. package/dist/3224.js.map +0 -1
  120. package/dist/3366.js +0 -1
  121. package/dist/3366.js.map +0 -1
  122. package/dist/349.js +0 -1
  123. package/dist/349.js.map +0 -1
  124. package/dist/3548.js +0 -1
  125. package/dist/3548.js.map +0 -1
  126. package/dist/3571.js +0 -1
  127. package/dist/3571.js.map +0 -1
  128. package/dist/3691.js +0 -1
  129. package/dist/3691.js.map +0 -1
  130. package/dist/3775.js +0 -1
  131. package/dist/3775.js.map +0 -1
  132. package/dist/3816.js +0 -1
  133. package/dist/3816.js.map +0 -1
  134. package/dist/3852.js +0 -1
  135. package/dist/3852.js.map +0 -1
  136. package/dist/3906.js +0 -1
  137. package/dist/3906.js.map +0 -1
  138. package/dist/3963.js +0 -1
  139. package/dist/3963.js.map +0 -1
  140. package/dist/405.js +0 -1
  141. package/dist/405.js.map +0 -1
  142. package/dist/4296.js +0 -1
  143. package/dist/4296.js.map +0 -1
  144. package/dist/4337.js +0 -1
  145. package/dist/4337.js.map +0 -1
  146. package/dist/4735.js +0 -1
  147. package/dist/4735.js.map +0 -1
  148. package/dist/4744.js +0 -1
  149. package/dist/4744.js.map +0 -1
  150. package/dist/4813.js +0 -2
  151. package/dist/4813.js.map +0 -1
  152. package/dist/4858.js +0 -1
  153. package/dist/4858.js.map +0 -1
  154. package/dist/487.js +0 -1
  155. package/dist/487.js.map +0 -1
  156. package/dist/4970.js +0 -1
  157. package/dist/4970.js.map +0 -1
  158. package/dist/5202.js +0 -1
  159. package/dist/5202.js.map +0 -1
  160. package/dist/5294.js +0 -1
  161. package/dist/5294.js.map +0 -1
  162. package/dist/545.js +0 -1
  163. package/dist/545.js.map +0 -1
  164. package/dist/552.js +0 -1
  165. package/dist/552.js.map +0 -1
  166. package/dist/5592.js +0 -1
  167. package/dist/5592.js.map +0 -1
  168. package/dist/5669.js +0 -1
  169. package/dist/5669.js.map +0 -1
  170. package/dist/5884.js +0 -1
  171. package/dist/5884.js.map +0 -1
  172. package/dist/5940.js +0 -1
  173. package/dist/5940.js.map +0 -1
  174. package/dist/6092.js +0 -1
  175. package/dist/6092.js.map +0 -1
  176. package/dist/6155.js +0 -1
  177. package/dist/6155.js.map +0 -1
  178. package/dist/6178.js +0 -1
  179. package/dist/6178.js.map +0 -1
  180. package/dist/6399.js +0 -1
  181. package/dist/6399.js.map +0 -1
  182. package/dist/6456.js +0 -1
  183. package/dist/6466.js +0 -3
  184. package/dist/6466.js.map +0 -1
  185. package/dist/6492.js +0 -1
  186. package/dist/6492.js.map +0 -1
  187. package/dist/6676.js +0 -1
  188. package/dist/6676.js.map +0 -1
  189. package/dist/6800.js +0 -1
  190. package/dist/6800.js.map +0 -1
  191. package/dist/6976.js +0 -1
  192. package/dist/6976.js.map +0 -1
  193. package/dist/7005.js +0 -1
  194. package/dist/7005.js.map +0 -1
  195. package/dist/7201.js +0 -1
  196. package/dist/7201.js.map +0 -1
  197. package/dist/7210.js +0 -1
  198. package/dist/7210.js.map +0 -1
  199. package/dist/7234.js +0 -1
  200. package/dist/7234.js.map +0 -1
  201. package/dist/7261.js +0 -1
  202. package/dist/7261.js.map +0 -1
  203. package/dist/7326.js +0 -1
  204. package/dist/7463.js +0 -1
  205. package/dist/7463.js.map +0 -1
  206. package/dist/7528.js +0 -1
  207. package/dist/7528.js.map +0 -1
  208. package/dist/7584.js +0 -1
  209. package/dist/7584.js.map +0 -1
  210. package/dist/7607.js +0 -1
  211. package/dist/7717.js +0 -1
  212. package/dist/7717.js.map +0 -1
  213. package/dist/7737.js +0 -1
  214. package/dist/7737.js.map +0 -1
  215. package/dist/7739.js +0 -1
  216. package/dist/7739.js.map +0 -1
  217. package/dist/7765.js +0 -1
  218. package/dist/7765.js.map +0 -1
  219. package/dist/7820.js +0 -1
  220. package/dist/7820.js.map +0 -1
  221. package/dist/7844.js +0 -1
  222. package/dist/7844.js.map +0 -1
  223. package/dist/7866.js +0 -1
  224. package/dist/7866.js.map +0 -1
  225. package/dist/7916.js +0 -1
  226. package/dist/7916.js.map +0 -1
  227. package/dist/7971.js +0 -1
  228. package/dist/7971.js.map +0 -1
  229. package/dist/8159.js +0 -7
  230. package/dist/8159.js.map +0 -1
  231. package/dist/8244.js +0 -1
  232. package/dist/8244.js.map +0 -1
  233. package/dist/8262.js +0 -1
  234. package/dist/8262.js.map +0 -1
  235. package/dist/834.js +0 -1
  236. package/dist/834.js.map +0 -1
  237. package/dist/8376.js +0 -1
  238. package/dist/8376.js.map +0 -1
  239. package/dist/845.js +0 -1
  240. package/dist/845.js.map +0 -1
  241. package/dist/8546.js +0 -1
  242. package/dist/8546.js.map +0 -1
  243. package/dist/8570.js +0 -1
  244. package/dist/8570.js.map +0 -1
  245. package/dist/87.js +0 -1
  246. package/dist/87.js.map +0 -1
  247. package/dist/8727.js +0 -1
  248. package/dist/8828.js +0 -1
  249. package/dist/8828.js.map +0 -1
  250. package/dist/8860.js +0 -1
  251. package/dist/8860.js.map +0 -1
  252. package/dist/9036.js +0 -1
  253. package/dist/9036.js.map +0 -1
  254. package/dist/9124.js +0 -1
  255. package/dist/9124.js.map +0 -1
  256. package/dist/9182.js +0 -1
  257. package/dist/921.js +0 -1
  258. package/dist/921.js.map +0 -1
  259. package/dist/9404.js +0 -1
  260. package/dist/9404.js.map +0 -1
  261. package/dist/9406.js +0 -1
  262. package/dist/9406.js.map +0 -1
  263. package/dist/9446.js +0 -1
  264. package/dist/9446.js.map +0 -1
  265. package/dist/9449.js +0 -1
  266. package/dist/9449.js.map +0 -1
  267. package/dist/9566.js +0 -5
  268. package/dist/9566.js.map +0 -1
  269. package/dist/9641.js +0 -1
  270. package/dist/9641.js.map +0 -1
  271. package/dist/9711.js +0 -1
  272. package/dist/9711.js.map +0 -1
  273. package/dist/9801.js +0 -1
  274. package/dist/9801.js.map +0 -1
  275. package/dist/9835.js +0 -11
  276. package/dist/9835.js.map +0 -1
  277. package/dist/kenyaemr-esm-admin-app.js +0 -5
  278. package/dist/kenyaemr-esm-admin-app.js.buildmanifest.json +0 -3173
  279. package/dist/kenyaemr-esm-admin-app.js.map +0 -1
  280. package/dist/main.js +0 -5
  281. package/dist/main.js.map +0 -1
  282. package/dist/routes.json +0 -1
  283. package/src/components/facility-setup/facility-setup.resource.tsx +0 -7
  284. package/src/components/hook/healthWorkerAdapter.ts +0 -213
  285. package/src/components/hook/useFacilityInfo.tsx +0 -37
@@ -1,5 +1,5 @@
1
1
  import { useTranslation } from 'react-i18next';
2
- import { optional, z } from 'zod';
2
+ import { z } from 'zod';
3
3
 
4
4
  const UserManagementFormSchema = (existingUsernames: Array<string>, isEdit?: boolean) => {
5
5
  const { t } = useTranslation();
@@ -13,9 +13,10 @@ const UserManagementFormSchema = (existingUsernames: Array<string>, isEdit?: boo
13
13
  message: t('genderRequired', 'Gender is required'),
14
14
  }),
15
15
  }),
16
+
16
17
  phoneNumber: z.string().optional(),
17
18
  email: z.string().optional(),
18
- providerIdentifiers: z.boolean().optional(),
19
+
19
20
  username: z
20
21
  .string()
21
22
  .nonempty(t('usernameRequired', 'Username is required'))
@@ -25,25 +26,33 @@ const UserManagementFormSchema = (existingUsernames: Array<string>, isEdit?: boo
25
26
  password: z.string().optional(),
26
27
  confirmPassword: z.string().optional(),
27
28
  forcePasswordChange: z.boolean().optional(),
29
+
28
30
  roles: z
29
31
  .array(
30
32
  z.object({
31
- uuid: z.string().min(1, 'UUI is required'),
33
+ uuid: z.string().min(1, 'UUID is required'),
32
34
  display: z.string().min(1, 'Role name is required'),
33
35
  description: z.string().nullable().optional(),
34
36
  }),
35
37
  )
36
38
  .optional(),
37
39
  primaryRole: z.string().optional(),
40
+
41
+ providerIdentifiers: z.boolean().optional(),
42
+ isEditProvider: z.boolean().optional(),
38
43
  systemId: z.string().optional(),
39
- providerLicense: z.string().optional(),
40
- licenseExpiryDate: z.date().optional(),
41
- registrationNumber: z.string().optional(),
42
- qualification: z.string().optional(),
44
+
43
45
  nationalId: z.string().optional(),
44
46
  passportNumber: z.string().optional(),
45
- isEditProvider: z.boolean().optional(),
47
+
46
48
  providerUniqueIdentifier: z.string().optional(),
49
+ providerLicense: z.string().optional(),
50
+ licenseExpiryDate: z.date().optional(),
51
+ licenseBody: z.string().optional(),
52
+ qualification: z.string().optional(),
53
+ specialty: z.string().optional(),
54
+ providerCadre: z.string().optional(),
55
+ practiceType: z.string().optional(),
47
56
  });
48
57
 
49
58
  return { userManagementFormSchema };
@@ -4,7 +4,7 @@ import dayjs from 'dayjs';
4
4
  export const configSchema = {
5
5
  providerNationalIdUuid: {
6
6
  _type: Type.String,
7
- _description: 'UUID for provider national id',
7
+ _description: 'UUID for provider national ID',
8
8
  _default: '3d152c97-2293-4a2b-802e-e0f1009b7b15',
9
9
  },
10
10
  passportNumberUuid: {
@@ -12,21 +12,17 @@ export const configSchema = {
12
12
  _description: 'UUID for passport number identification for provider',
13
13
  _default: '5b4b88e8-9db3-41e6-a175-5e39f2c8a9a5',
14
14
  },
15
- providerHieFhirReference: {
16
- _type: Type.String,
17
- _description: 'UUID for provider hie fhir reference',
18
- _default: '67b94e8e-4d61-4810-b0f1-d86497f6e553',
19
- },
20
- qualificationUuid: {
15
+ providerUniqueIdentifierAttributeTypeUuid: {
21
16
  _type: Type.String,
22
- _description: 'UUID for provider hie qualification',
23
- _default: '43f99413-6e7f-4812-bc60-066bb1d43f94',
17
+ _description: 'UUID for cross-regulator provider unique identifier (PUID)',
18
+ _default: 'dace9d99-9f29-4653-9eae-c05929f34a32',
24
19
  },
25
- licenseBodyUuid: {
20
+ externalProviderIdentifierUuid: {
26
21
  _type: Type.String,
27
- _description: 'UUID for license body',
28
- _default: 'ba18bb97-d17c-4640-80d2-58e7df90ca4c',
22
+ _description: 'UUID for external provider identifier (regulator-public reference)',
23
+ _default: 'bbdf67e8-c020-40ff-8ad6-74ba34893882',
29
24
  },
25
+
30
26
  licenseNumberUuid: {
31
27
  _type: Type.String,
32
28
  _description: 'UUID for license number',
@@ -37,6 +33,31 @@ export const configSchema = {
37
33
  _description: 'UUID for license expiry date',
38
34
  _default: '00539959-a1c7-4848-a5ed-8941e9d5e835',
39
35
  },
36
+ licenseBodyUuid: {
37
+ _type: Type.String,
38
+ _description: 'UUID for licensing body (e.g. KMPDC, NCK, PPB, COC)',
39
+ _default: 'ba18bb97-d17c-4640-80d2-58e7df90ca4c',
40
+ },
41
+ qualificationUuid: {
42
+ _type: Type.String,
43
+ _description: 'UUID for provider educational qualification',
44
+ _default: '43f99413-6e7f-4812-bc60-066bb1d43f94',
45
+ },
46
+ specialtyUuid: {
47
+ _type: Type.String,
48
+ _description: 'UUID for provider clinical specialty',
49
+ _default: '7f5d8e2c-3a1b-4d6e-9c0f-2b4a1d5e8c91',
50
+ },
51
+ providerCadreUuid: {
52
+ _type: Type.String,
53
+ _description: 'UUID for provider professional cadre',
54
+ _default: '8a6e9f3d-4b2c-5e7f-ad10-3c5b2e6f9da2',
55
+ },
56
+ practiceTypeUuid: {
57
+ _type: Type.String,
58
+ _description: 'UUID for provider practice type (clinical, non-clinical, etc.)',
59
+ _default: '9b7faa4e-5c3d-6f80-be21-4d6c3f70aeb3',
60
+ },
40
61
  phoneNumberUuid: {
41
62
  _type: Type.String,
42
63
  _description: 'UUID for provider phone number',
@@ -44,9 +65,14 @@ export const configSchema = {
44
65
  },
45
66
  providerAddressUuid: {
46
67
  _type: Type.String,
47
- _description: 'UUID for provider address',
68
+ _description: 'UUID for provider postal address',
48
69
  _default: '033ff604-ecf7-464f-b623-5b77c733667f',
49
70
  },
71
+ providerHieFhirReference: {
72
+ _type: Type.String,
73
+ _description: 'UUID for provider HIE FHIR reference',
74
+ _default: '67b94e8e-4d61-4810-b0f1-d86497f6e553',
75
+ },
50
76
  personEmailAttributeUuid: {
51
77
  _type: Type.String,
52
78
  _description: 'UUID for person email attribute',
@@ -57,48 +83,6 @@ export const configSchema = {
57
83
  _description: 'UUID for person phone number attribute',
58
84
  _default: 'b2c38640-2603-4629-aebd-3b54f33f1e3a',
59
85
  },
60
- providerUniqueIdentifierAttributeTypeUuid: {
61
- _type: Type.String,
62
- _description: 'UUID for provider unique identifier attribute type',
63
- _default: 'dace9d99-9f29-4653-9eae-c05929f34a32',
64
- },
65
- identifierTypes: {
66
- _type: Type.Array,
67
- _elements: {
68
- _type: Type.Object,
69
- properties: {
70
- key: { _type: Type.String },
71
- name: { _type: Type.String },
72
- },
73
- },
74
- _default: [
75
- { key: 'National ID', name: 'National ID' },
76
- { key: 'registration_number', name: 'Registration Number' },
77
- { key: 'Passport', name: 'Passport Number' },
78
- ],
79
- _description: 'List of identifier types with unique keys for each.',
80
- },
81
- regulatorOptions: {
82
- _type: Type.Array,
83
- _elements: {
84
- _type: Type.Object,
85
- properties: {
86
- key: { _type: Type.String },
87
- name: { _type: Type.String },
88
- },
89
- },
90
- _default: [
91
- { key: 'Clinical Officers Council', name: 'Clinical Officers Council' },
92
- { key: 'Pharmacy and Poisons Board', name: 'Pharmacy and Poisons Board' },
93
- { key: 'Nursing Council', name: 'Nursing Council' },
94
- { key: 'KMPDC', name: 'Kenya Medical Practitioners and Dentists Council (KMPDC)' },
95
- {
96
- key: 'Kenya Medical Laboratory Technicians & Technologists Board',
97
- name: 'Kenya Medical Laboratory Technicians & Technologists Board',
98
- },
99
- ],
100
- _description: 'List of regulator options with unique keys for each.',
101
- },
102
86
  };
103
87
 
104
88
  export interface UserProperties {
@@ -109,22 +93,18 @@ export interface UserProperties {
109
93
  export interface ConfigObject {
110
94
  providerNationalIdUuid: string;
111
95
  passportNumberUuid: string;
112
- providerHieFhirReference: string;
113
96
  providerUniqueIdentifierAttributeTypeUuid: string;
97
+ externalProviderIdentifierUuid: string;
98
+ licenseNumberUuid: string;
99
+ licenseExpiryDateUuid: string;
100
+ licenseBodyUuid: string;
101
+ qualificationUuid: string;
102
+ specialtyUuid: string;
103
+ providerCadreUuid: string;
104
+ practiceTypeUuid: string;
114
105
  phoneNumberUuid: string;
115
106
  providerAddressUuid: string;
116
- qualificationUuid: string;
117
- licenseBodyUuid: string;
118
- licenseNumberUuid: string;
107
+ providerHieFhirReference: string;
119
108
  personEmailAttributeUuid: string;
120
109
  personPhonenumberAttributeUuid: string;
121
- licenseExpiryDateUuid: string;
122
- identifierTypes: Array<{
123
- key: string;
124
- name: string;
125
- }>;
126
- regulatorOptions: Array<{
127
- key: string;
128
- name: string;
129
- }>;
130
110
  }
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@ const options = {
9
9
  };
10
10
 
11
11
  export const importTranslation = require.context('../translations', false, /.json$/, 'lazy');
12
-
12
+ export * from './components/global-property/index';
13
13
  export const root = getAsyncLifecycle(() => import('./root.component'), options);
14
14
 
15
15
  export function startupApp() {
@@ -28,33 +28,35 @@ export const userRoleScopeWorkspace = getAsyncLifecycle(
28
28
  ),
29
29
  options,
30
30
  );
31
-
31
+ // t("manageUsers", "Manage Users")
32
32
  export const userManagementLeftPannelLink = getAsyncLifecycle(
33
33
  () =>
34
34
  import('./left-pannel-link.component').then((m) => ({
35
- default: m.createLeftPanelLink({ title: 'Manage Users', name: 'user-management' }),
35
+ default: m.createLeftPanelLink({ title: 'manageUsers', name: 'user-management' }),
36
36
  })),
37
37
  options,
38
38
  );
39
-
39
+ // t("etlAdministration", "ETL Administration")
40
40
  export const etlAdministrationLeftPannelLink = getAsyncLifecycle(
41
41
  () =>
42
42
  import('./left-pannel-link.component').then((m) => ({
43
- default: m.createLeftPanelLink({ title: 'ETL Administration', name: 'etl-administration' }),
43
+ default: m.createLeftPanelLink({ title: 'etlAdministration', name: 'etl-administration' }),
44
44
  })),
45
45
  options,
46
46
  );
47
+ // t("locations", "Locations")
47
48
  export const locationsLeftPanelLink = getAsyncLifecycle(
48
49
  () =>
49
50
  import('./left-pannel-link.component').then((m) => ({
50
- default: m.createLeftPanelLink({ title: 'Locations', name: 'locations' }),
51
+ default: m.createLeftPanelLink({ title: 'locations', name: 'locations' }),
51
52
  })),
52
53
  options,
53
54
  );
55
+ // t("facilityDetails", "Facility Details")
54
56
  export const facilitySetupLeftPanelLink = getAsyncLifecycle(
55
57
  () =>
56
58
  import('./left-pannel-link.component').then((m) => ({
57
- default: m.createLeftPanelLink({ title: 'Facility Details', name: 'facility-setup' }),
59
+ default: m.createLeftPanelLink({ title: 'facilityDetails', name: 'facility-setup' }),
58
60
  })),
59
61
  options,
60
62
  );
@@ -74,6 +76,18 @@ export const searchLocationWorkspace = getAsyncLifecycle(
74
76
  () => import('./components/locations/forms/search-location/search-location.workspace'),
75
77
  options,
76
78
  );
79
+ export const globalPropertyWorkspace = getAsyncLifecycle(
80
+ () => import('./components/global-property/workspace/global-property.workspace'),
81
+ options,
82
+ );
83
+ export const uploadLogoWorkspace = getAsyncLifecycle(
84
+ () => import('./components/global-property/workspace/upload-logo.workspace'),
85
+ options,
86
+ );
87
+ export const deleteGlobalPropertyModal = getAsyncLifecycle(
88
+ () => import('./components/global-property/modal/delete-global-property-modal.component'),
89
+ options,
90
+ );
77
91
 
78
92
  // t('providerBanner', 'Provider banner')
79
93
  export const providerBanner = getAsyncLifecycle(
@@ -1,7 +1,8 @@
1
- import React, { useMemo } from 'react';
1
+ import { ConfigurableLink } from '@openmrs/esm-framework';
2
2
  import last from 'lodash-es/last';
3
+ import React, { useMemo } from 'react';
4
+ import { useTranslation } from 'react-i18next';
3
5
  import { BrowserRouter, useLocation } from 'react-router-dom';
4
- import { ConfigurableLink } from '@openmrs/esm-framework';
5
6
 
6
7
  export interface LinkConfig {
7
8
  name: string;
@@ -9,6 +10,7 @@ export interface LinkConfig {
9
10
  }
10
11
 
11
12
  function LinkExtension({ config }: { config: LinkConfig }) {
13
+ const { t } = useTranslation();
12
14
  const { name, title } = config;
13
15
  const location = useLocation();
14
16
 
@@ -27,7 +29,7 @@ function LinkExtension({ config }: { config: LinkConfig }) {
27
29
  <ConfigurableLink
28
30
  to={`${window.getOpenmrsSpaBase()}admin${name && name !== 'admin' ? `/${name}` : ''}`}
29
31
  className={`cds--side-nav__link ${name === urlSegment && 'active-left-nav-link'}`}>
30
- {title}
32
+ {t(title)}
31
33
  </ConfigurableLink>
32
34
  );
33
35
  }
@@ -9,6 +9,7 @@ import FacilitySetup from './components/facility-setup/facility-setup.component'
9
9
  import HomeComponent from './components/locations/home/home-locations.component';
10
10
 
11
11
  import styles from './root.scss';
12
+ import GlobalPropertyDashboard from './components/global-property/dashboard/global-property-dashboard.component';
12
13
 
13
14
  const Root: React.FC = () => {
14
15
  const spaBasePath = globalThis.spaBase;
@@ -28,6 +29,7 @@ const Root: React.FC = () => {
28
29
  <Route path="/etl-administration" element={<EtlAdminDashboard />} />
29
30
  <Route path="/facility-setup" element={<FacilitySetup />} />
30
31
  <Route path="/locations" element={<HomeComponent />} />
32
+ <Route path="/global-property" element={<GlobalPropertyDashboard />} />
31
33
  </Routes>
32
34
  </main>
33
35
  </BrowserRouter>
package/src/routes.json CHANGED
@@ -29,11 +29,20 @@
29
29
  "name": "facility-setup-left-panel-link",
30
30
  "slot": "admin-left-panel-slot"
31
31
  },
32
+ {
33
+ "name":"global-property-link",
34
+ "component":"globalPropertyLink",
35
+ "slot": "admin-left-panel-slot"
36
+ },
32
37
  {
33
38
  "component": "providerBanner",
34
39
  "name": "provider-banner",
35
40
  "slot": "provider-banner-info-slot",
36
41
  "order": 1
42
+ },
43
+ {
44
+ "component": "globalPropertyDashboard",
45
+ "name": "global-property-dashboard"
37
46
  }
38
47
  ],
39
48
  "modals": [
@@ -52,6 +61,10 @@
52
61
  {
53
62
  "component": "hwrSyncModal",
54
63
  "name": "hwr-syncing-modal"
64
+ },
65
+ {
66
+ "component": "deleteGlobalPropertyModal",
67
+ "name": "delete-global-property-modal"
55
68
  }
56
69
  ],
57
70
  "workspaces2": [
@@ -74,13 +87,24 @@
74
87
  "name": "search-location-workspace",
75
88
  "component": "searchLocationWorkspace",
76
89
  "window": "esm-admin-workspace-window"
90
+ },
91
+ {
92
+ "name": "global-property-workspace",
93
+ "component": "globalPropertyWorkspace",
94
+ "window": "esm-admin-workspace-window"
95
+ },
96
+ {
97
+ "name": "upload-logo-workspace",
98
+ "component": "uploadLogoWorkspace",
99
+ "window": "esm-admin-workspace-window"
77
100
  }
78
101
  ],
79
102
  "workspaceWindows2": [
80
103
  {
81
104
  "name": "esm-admin-workspace-window",
82
105
  "canMaximize": true,
83
- "group": "esm-admin-workspace-group"
106
+ "group": "esm-admin-workspace-group",
107
+ "width":"wider"
84
108
  },
85
109
  {
86
110
  "name": "esm-admin-extra-wide-workspace-window",
@@ -1,5 +1,3 @@
1
- import { fhirBaseUrl, Type } from '@openmrs/esm-framework';
2
-
3
1
  export interface ETLResponse {
4
2
  script_name: string;
5
3
  start_time: string;
@@ -411,3 +409,14 @@ export interface CustomHIEPractitionerResponse {
411
409
  };
412
410
  fhirFormat: boolean;
413
411
  }
412
+
413
+ export type SystemSettings = {
414
+ property: string;
415
+ description?: string;
416
+ datatypeClassname?: string;
417
+ datatypeConfig?: string;
418
+ preferredHandlerClassname?: string;
419
+ handlerConfig?: string | null;
420
+ value: string;
421
+ uuid?: string;
422
+ };