@kenyaemr/esm-admin-app 5.4.2-pre.2277 → 5.4.2-pre.2279

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/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"kenyaemrCharts":"^1.6.7"},"extensions":[{"component":"adminLeftPanelLink","name":"admin-left-panel-link","slot":"admin-left-panel-slot"},{"component":"userManagementLeftPannelLink","name":"user-management-left-panel-link","slot":"admin-left-panel-slot"},{"component":"etlAdministrationLeftPannelLink","name":"etl-administration-left-panel-link","slot":"admin-left-panel-slot"},{"component":"locationsLeftPanelLink","name":"locations-left-panel-link","slot":"admin-left-panel-slot"},{"component":"facilitySetupLeftPanelLink","name":"facility-setup-left-panel-link","slot":"admin-left-panel-slot"}],"workspaces":[{"name":"manage-user-workspace","component":"manageUserWorkspace","title":"Manage User Workspace","type":"other-form","canMaximize":true,"width":"extra-wide"},{"name":"user-role-scope-workspace","component":"userRoleScopeWorkspace","title":"User Rple Scope Workspace","type":"other-form","canMaximize":true,"width":"extra-wide"},{"name":"add-location-workspace","title":"Add Location","component":"addLocation","type":"workspace"},{"name":"search-location-workspace","title":"Search Location","component":"searchLocationWorkspace","type":"workspace"},{"name":"hwr-sync-workspace","title":"HWR Sync Workspace","component":"hwrSyncWorkspace","type":"other-form"},{"name":"hwr-sync-modal","title":"HWR Sync Modal","component":"hwrSyncModal","type":"modal"}],"modals":[{"component":"operationConfirmationModal","name":"operation-confirmation-modal"},{"component":"hwrConfirmationModal","name":"hwr-confirmation-modal"},{"component":"hwrEmptyModal","name":"hwr-empty-modal"},{"component":"hwrSyncModal","name":"hwr-syncing-modal"}],"pages":[{"component":"root","route":"admin"}],"version":"5.4.2-pre.2277"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"kenyaemrCharts":"^1.6.7"},"extensions":[{"component":"adminLeftPanelLink","name":"admin-left-panel-link","slot":"admin-left-panel-slot"},{"component":"userManagementLeftPannelLink","name":"user-management-left-panel-link","slot":"admin-left-panel-slot"},{"component":"etlAdministrationLeftPannelLink","name":"etl-administration-left-panel-link","slot":"admin-left-panel-slot"},{"component":"locationsLeftPanelLink","name":"locations-left-panel-link","slot":"admin-left-panel-slot"},{"component":"facilitySetupLeftPanelLink","name":"facility-setup-left-panel-link","slot":"admin-left-panel-slot"}],"workspaces":[{"name":"manage-user-workspace","component":"manageUserWorkspace","title":"Manage User Workspace","type":"other-form","canMaximize":true,"width":"extra-wide"},{"name":"user-role-scope-workspace","component":"userRoleScopeWorkspace","title":"User Rple Scope Workspace","type":"other-form","canMaximize":true,"width":"extra-wide"},{"name":"add-location-workspace","title":"Add Location","component":"addLocation","type":"workspace"},{"name":"search-location-workspace","title":"Search Location","component":"searchLocationWorkspace","type":"workspace"},{"name":"hwr-sync-workspace","title":"HWR Sync Workspace","component":"hwrSyncWorkspace","type":"other-form"},{"name":"hwr-sync-modal","title":"HWR Sync Modal","component":"hwrSyncModal","type":"modal"}],"modals":[{"component":"operationConfirmationModal","name":"operation-confirmation-modal"},{"component":"hwrConfirmationModal","name":"hwr-confirmation-modal"},{"component":"hwrEmptyModal","name":"hwr-empty-modal"},{"component":"hwrSyncModal","name":"hwr-syncing-modal"}],"pages":[{"component":"root","route":"admin"}],"version":"5.4.2-pre.2279"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenyaemr/esm-admin-app",
3
- "version": "5.4.2-pre.2277",
3
+ "version": "5.4.2-pre.2279",
4
4
  "description": "Facilitates the management of ETL tables",
5
5
  "browser": "dist/kenyaemr-esm-admin-app.js",
6
6
  "main": "src/index.ts",
@@ -20,15 +20,15 @@ const ResultsTile: React.FC<ResultsTileProps> = ({ location, onClose }) => {
20
20
  {onClose && <Close size={16} className={styles.closeIcon} onClick={onClose} />}
21
21
  <Hospital className={styles.illustrationPictogram} />
22
22
  <div className={styles.details}>
23
- <div style={{ fontWeight: 'bold' }}>{location.display || location.name}</div>
24
- {location.description && <div style={{ fontSize: '0.875rem', color: '#666' }}>{location.description}</div>}
23
+ <div className={styles.locationName}>{location.display || location.name}</div>
24
+ {location.description && <div className={styles.description}>{location.description}</div>}
25
25
  {(location.stateProvince || location.country) && (
26
- <div style={{ fontSize: '0.75rem', color: '#888' }}>
26
+ <div className={styles.locationDetails}>
27
27
  {[location.stateProvince, location.country].filter(Boolean).join(', ')}
28
28
  </div>
29
29
  )}
30
30
  {location.tags && (
31
- <div style={{ fontSize: '0.75rem', color: '#888' }}>
31
+ <div className={styles.tags}>
32
32
  {location.tags.map((tag, index) => (
33
33
  <Tag key={index} className={styles.tag}>
34
34
  {tag.display || tag.name}
@@ -62,3 +62,25 @@
62
62
  color: colors.$gray-100;
63
63
  }
64
64
  }
65
+
66
+ .description {
67
+ @include type.type-style('body-compact-01');
68
+ color: colors.$gray-70;
69
+ margin-bottom: layout.$spacing-03;
70
+ font-size: layout.$spacing-01;
71
+ }
72
+ .locationName {
73
+ @include type.type-style('body-compact-01');
74
+ color: colors.$gray-70;
75
+ font-weight: bold;
76
+ }
77
+ .locationDetails {
78
+ @include type.type-style('body-compact-01');
79
+ color: colors.$gray-70;
80
+ font-size: layout.$spacing-01;
81
+ }
82
+ .tags {
83
+ @include type.type-style('body-compact-01');
84
+ color: colors.$gray-70;
85
+ font-size: layout.$spacing-01;
86
+ }
@@ -23,11 +23,11 @@ import classNames from 'classnames';
23
23
  import { z } from 'zod';
24
24
  import { zodResolver } from '@hookform/resolvers/zod';
25
25
  import styles from './add-location.workspace.scss';
26
- import { editLocation, saveLocation } from '../../hooks/useLocation';
27
- import { LocationResponse, type AdmissionLocationResponse } from '../../types';
26
+ import { type LocationResponse } from '../../types';
28
27
  import { extractErrorMessagesFromResponse } from '../../helpers';
29
28
  import { useLocationTags } from '../../hooks/useLocationTags';
30
29
  import { mutate } from 'swr';
30
+ import { saveOrUpdateLocation } from '../../hooks/useLocation';
31
31
 
32
32
  type AddLocationWorkspaceProps = DefaultWorkspaceProps & {
33
33
  location?: LocationResponse;
@@ -89,16 +89,14 @@ const AddLocationWorkspace: React.FC<AddLocationWorkspaceProps> = ({
89
89
  };
90
90
 
91
91
  try {
92
- if (location?.uuid) {
93
- await editLocation(location.uuid, locationPayload);
94
- } else {
95
- await saveLocation(locationPayload);
96
- }
92
+ const locationUuid = location?.uuid && typeof location.uuid === 'string' ? location.uuid : undefined;
93
+
94
+ await saveOrUpdateLocation(locationPayload, locationUuid);
97
95
 
98
96
  showSnackbar({
99
97
  title: t('success', 'Success'),
100
98
  kind: 'success',
101
- subtitle: location?.uuid
99
+ subtitle: locationUuid
102
100
  ? t('locationUpdated', 'Location {{locationName}} was updated successfully.', {
103
101
  locationName: data.name,
104
102
  })
@@ -16,7 +16,7 @@ import { z } from 'zod';
16
16
  import { LocationAutosuggest } from '../../auto-suggest/location-autosuggest.component';
17
17
  import ResultsTile from '../../common/results-tile.component';
18
18
  import { extractErrorMessagesFromResponse } from '../../helpers';
19
- import { editLocation } from '../../hooks/useLocation';
19
+ import { saveOrUpdateLocation } from '../../hooks/useLocation';
20
20
  import { useLocationTags } from '../../hooks/useLocationTags';
21
21
  import { LocationResponse } from '../../types';
22
22
  import styles from './search-location.workspace.scss';
@@ -78,7 +78,7 @@ const SearchLocationWorkspace: React.FC<AddLocationWorkspaceProps> = ({
78
78
  tags: locationTagsUuid,
79
79
  };
80
80
 
81
- await editLocation(locationUuid, locationPayload);
81
+ await saveOrUpdateLocation(locationUuid, locationPayload);
82
82
 
83
83
  showSnackbar({
84
84
  title: t('success', 'Success'),
@@ -1,19 +1,13 @@
1
1
  import { restBaseUrl, openmrsFetch } from '@openmrs/esm-framework';
2
- import useSWR from 'swr';
3
2
 
4
- export const saveLocation = async (locationPayload) => {
5
- const url = `${restBaseUrl}/location`;
6
- return await openmrsFetch(url, {
7
- method: 'POST',
8
- body: locationPayload,
9
- headers: {
10
- 'Content-Type': 'application/json',
11
- },
12
- });
13
- };
3
+ export const saveOrUpdateLocation = async (locationPayload, locationUuid) => {
4
+ if (typeof locationPayload === 'string' && typeof locationUuid === 'object') {
5
+ const temp = locationPayload;
6
+ locationPayload = locationUuid;
7
+ locationUuid = temp;
8
+ }
14
9
 
15
- export const editLocation = async (locationUuid, locationPayload) => {
16
- const url = `${restBaseUrl}/location/${locationUuid}`;
10
+ const url = locationUuid ? `${restBaseUrl}/location/${locationUuid}` : `${restBaseUrl}/location`;
17
11
  return await openmrsFetch(url, {
18
12
  method: 'POST',
19
13
  body: locationPayload,
@@ -1,4 +1,4 @@
1
- import { FetchResponse, fhirBaseUrl, openmrsFetch } from '@openmrs/esm-framework';
1
+ import { FetchResponse, fhirBaseUrl, openmrsFetch, useFhirFetchAll } from '@openmrs/esm-framework';
2
2
  import { type FHIRBundle, FHIRLocation, LocationTagsResponse } from '../types';
3
3
  import useSWR from 'swr';
4
4
 
@@ -17,7 +17,7 @@ export async function getFacilitiesByLocationTags(
17
17
  .filter(Boolean)
18
18
  .join(',');
19
19
 
20
- const url = `${fhirBaseUrl}/Location?_summary=data&_tag=${tagNames}`;
20
+ const url = `${useFhirFetchAll}/Location?_summary=data&_tag=${tagNames}`;
21
21
  const response = await openmrsFetch<FHIRBundle>(url);
22
22
 
23
23
  const locations = response.data?.entry?.map((entry) => entry.resource) ?? [];
@@ -4,16 +4,19 @@
4
4
  "Active Licensed": "Active Licensed",
5
5
  "activeFrom": "Active From",
6
6
  "activeTo": "Active To",
7
+ "addLocation": "Add Location",
7
8
  "addUser": "Add User",
8
9
  "adminLeftPannel": "Admin left panel",
9
10
  "All users": "All users",
10
11
  "cancel": "Cancel",
12
+ "checkFilters": "Check the filters above",
11
13
  "chooseAStockRole": "Choose a stock role",
12
14
  "completionStatus": "Completion status",
13
15
  "confirmation": "Confirmation",
14
16
  "continue": "Continue to registration",
15
17
  "delete": "Delete",
16
18
  "deletingstockUserScope": "Delete Stock User Scope",
19
+ "description": "Description",
17
20
  "edit": "Edit",
18
21
  "editUser": "Edit User",
19
22
  "emailAddress": "Email address",
@@ -43,17 +46,22 @@
43
46
  "licenseExpiringSoon": "License is expiring soon",
44
47
  "licenseExpiryDate": "License Expiry Date",
45
48
  "licenseNumber": "License Number",
49
+ "loading": "",
46
50
  "location": "Location(s)",
51
+ "locationName": "Location Name",
52
+ "locations": "Locations",
47
53
  "manageUserRoleScope": "Manage user role scope",
48
54
  "names": "Names",
49
55
  "nationalId": "National ID",
50
56
  "nextPage": "Next page",
51
57
  "no": "No",
58
+ "noData": "No data to display",
52
59
  "noDescriptionAvailable": "No description available",
53
60
  "noHwrApi": "Health Care Worker Registry API credentials not configured,Kindly contact system admin. Do you want to continue to create an account",
54
61
  "noMatchingUsers": "No matching users found",
55
62
  "noRecordsFound": "No ETL Operation logs found",
56
63
  "noRespond": "No",
64
+ "noSearchResults": "",
57
65
  "noUserRoleScope": "No user role scope",
58
66
  "noUsersAvailable": "No users available",
59
67
  "operationError": "{{operationName}} failed",
@@ -79,7 +87,10 @@
79
87
  "remove": "Remove",
80
88
  "ResourceNotFound": "The Health Work Registry is not reachable, kindly confirm your internet connectivity and try again. Do you want to continue to create an account",
81
89
  "role": "Role",
90
+ "search": "Search location",
82
91
  "searchForUsers": "Search for user",
92
+ "searchNoResults": "Found no matching results",
93
+ "searchNoResultsHelper": "Try searching for a different term",
83
94
  "shaContracted": "SHA Contracted",
84
95
  "shaExpiry": "SHA Expiry Date",
85
96
  "shaInformation": "SHA Information",
@@ -97,6 +108,9 @@
97
108
  "syncingHieError": "Syncing with HIE Failed",
98
109
  "syncingHieSuccess": "Synchronization Complete",
99
110
  "systemId": "System ID",
111
+ "tagLocation": "Tag Location",
112
+ "tags": "Tags",
113
+ "tryDifferentSearch": "Try a different search term",
100
114
  "unknownError": "An error occured while searching Health Worker Registry, kindly contact system admin. Do you want to continue to create an account ",
101
115
  "unlicensed": "Unlicensed",
102
116
  "Unlicensed": "Unlicensed",
@@ -1,35 +0,0 @@
1
- {
2
- "results": [
3
- {
4
- "uuid": "45a10dd9-edaa-4e50-a2d7-343fef0415eb",
5
- "display": "10 Engineer VCT",
6
- "name": "10 Engineer VCT",
7
- "description": "Dispensary",
8
- "stateProvince": "Laikipia",
9
- "country": "Kenya",
10
- "countyDistrict": "Laikipia",
11
- "address5": "Nanyuki",
12
- "address6": "Laikipia East",
13
- "tags": [],
14
-
15
- "attributes": [
16
- {
17
- "display": "Master Facility Code: 14180",
18
- "uuid": "21e6dc68-46e7-4f2e-916c-4281c62dad6b",
19
- "attributeType": {
20
- "uuid": "8a845a89-6aa5-4111-81d3-0af31c45c002",
21
- "display": "Master Facility Code",
22
- "links": [
23
- {
24
- "rel": "self",
25
- "uri": "https://qa.kenyahmis.org/openmrs/ws/rest/v1/locationattributetype/8a845a89-6aa5-4111-81d3-0af31c45c002",
26
- "resourceAlias": "locationattributetype"
27
- }
28
- ]
29
- },
30
- "value": "14180"
31
- }
32
- ]
33
- }
34
- ]
35
- }