@kenyaemr/esm-patient-list-management-app 7.0.2-pre.65

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 (103) hide show
  1. package/.turbo/turbo-build.log +41 -0
  2. package/dist/130.js +2 -0
  3. package/dist/130.js.LICENSE.txt +3 -0
  4. package/dist/130.js.map +1 -0
  5. package/dist/139.js +1 -0
  6. package/dist/139.js.map +1 -0
  7. package/dist/255.js +2 -0
  8. package/dist/255.js.LICENSE.txt +9 -0
  9. package/dist/255.js.map +1 -0
  10. package/dist/271.js +1 -0
  11. package/dist/319.js +1 -0
  12. package/dist/382.js +1 -0
  13. package/dist/382.js.map +1 -0
  14. package/dist/443.js +1 -0
  15. package/dist/443.js.map +1 -0
  16. package/dist/460.js +1 -0
  17. package/dist/548.js +1 -0
  18. package/dist/548.js.map +1 -0
  19. package/dist/574.js +1 -0
  20. package/dist/591.js +2 -0
  21. package/dist/591.js.LICENSE.txt +32 -0
  22. package/dist/591.js.map +1 -0
  23. package/dist/635.js +1 -0
  24. package/dist/635.js.map +1 -0
  25. package/dist/644.js +1 -0
  26. package/dist/729.js +1 -0
  27. package/dist/729.js.map +1 -0
  28. package/dist/757.js +1 -0
  29. package/dist/784.js +2 -0
  30. package/dist/784.js.LICENSE.txt +9 -0
  31. package/dist/784.js.map +1 -0
  32. package/dist/788.js +1 -0
  33. package/dist/807.js +1 -0
  34. package/dist/833.js +1 -0
  35. package/dist/930.js +2 -0
  36. package/dist/930.js.LICENSE.txt +35 -0
  37. package/dist/930.js.map +1 -0
  38. package/dist/kenyaemr-esm-patient-list-management-app.js +1 -0
  39. package/dist/kenyaemr-esm-patient-list-management-app.js.buildmanifest.json +580 -0
  40. package/dist/kenyaemr-esm-patient-list-management-app.js.map +1 -0
  41. package/dist/main.js +2 -0
  42. package/dist/main.js.LICENSE.txt +45 -0
  43. package/dist/main.js.map +1 -0
  44. package/dist/routes.json +1 -0
  45. package/jest.config.js +3 -0
  46. package/package.json +56 -0
  47. package/src/add-patient/add-patient.component.tsx +271 -0
  48. package/src/add-patient/add-patient.scss +51 -0
  49. package/src/add-patient-to-patient-list-menu-item.component.tsx +48 -0
  50. package/src/add-patient-to-patient-list-menu-item.test.tsx +33 -0
  51. package/src/api/api-remote.ts +211 -0
  52. package/src/api/hooks.ts +150 -0
  53. package/src/api/types.ts +102 -0
  54. package/src/config-schema.ts +25 -0
  55. package/src/constants.ts +5 -0
  56. package/src/create-edit-patient-list/create-edit-list.component.tsx +170 -0
  57. package/src/create-edit-patient-list/create-edit-patient-list.scss +31 -0
  58. package/src/createDashboardLink.component.tsx +40 -0
  59. package/src/dashboard.meta.ts +5 -0
  60. package/src/declarations.d.ts +5 -0
  61. package/src/empty-state/empty-data-illustration.component.tsx +42 -0
  62. package/src/empty-state/empty-state.component.tsx +41 -0
  63. package/src/empty-state/empty-state.scss +24 -0
  64. package/src/error-state/error-state.component.tsx +35 -0
  65. package/src/error-state/error-state.scss +50 -0
  66. package/src/header/header.component.tsx +51 -0
  67. package/src/header/header.scss +52 -0
  68. package/src/illo.component.tsx +25 -0
  69. package/src/index.ts +41 -0
  70. package/src/list-details/list-details.component.tsx +201 -0
  71. package/src/list-details/list-details.scss +47 -0
  72. package/src/list-details/list-details.test.tsx +112 -0
  73. package/src/list-details/patient-list-detail.test.tsx +105 -0
  74. package/src/list-details-table/list-details-table.component.tsx +402 -0
  75. package/src/list-details-table/list-details-table.scss +143 -0
  76. package/src/list-details-table/list-details-table.test.tsx +94 -0
  77. package/src/lists-dashboard/lists-dashboard.component.tsx +104 -0
  78. package/src/lists-dashboard/lists-dashboard.scss +110 -0
  79. package/src/lists-dashboard/lists-dashboard.test.tsx +129 -0
  80. package/src/lists-table/custom-pagination.component.tsx +43 -0
  81. package/src/lists-table/custom-pagination.scss +67 -0
  82. package/src/lists-table/lists-table.component.tsx +317 -0
  83. package/src/lists-table/lists-table.scss +100 -0
  84. package/src/lists-table/lists-table.test.tsx +189 -0
  85. package/src/lists-table/use-pagination-info.component.tsx +35 -0
  86. package/src/offline.ts +31 -0
  87. package/src/overlay.component.tsx +49 -0
  88. package/src/overlay.scss +89 -0
  89. package/src/overlay.test.tsx +60 -0
  90. package/src/root.component.tsx +19 -0
  91. package/src/routes.json +36 -0
  92. package/src/style.scss +46 -0
  93. package/translations/am.json +84 -0
  94. package/translations/ar.json +84 -0
  95. package/translations/en.json +84 -0
  96. package/translations/es.json +84 -0
  97. package/translations/fr.json +84 -0
  98. package/translations/he.json +84 -0
  99. package/translations/km.json +84 -0
  100. package/translations/zh.json +84 -0
  101. package/translations/zh_CN.json +84 -0
  102. package/tsconfig.json +5 -0
  103. package/webpack.config.js +1 -0
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { Button, Header } from '@carbon/react';
3
+ import { ArrowLeft, Close } from '@carbon/react/icons';
4
+ import { useLayoutType, isDesktop } from '@openmrs/esm-framework';
5
+ import styles from './overlay.scss';
6
+
7
+ interface OverlayProps {
8
+ buttonsGroup?: React.ReactElement;
9
+ children?: React.ReactNode;
10
+ close: () => void;
11
+ header: string;
12
+ }
13
+
14
+ const Overlay: React.FC<OverlayProps> = ({ buttonsGroup, children, close, header }) => {
15
+ const layout = useLayoutType();
16
+
17
+ return (
18
+ <div className={isDesktop(layout) ? styles.desktopOverlay : styles.tabletOverlay}>
19
+ {isDesktop(layout) ? (
20
+ <div className={styles.desktopHeader}>
21
+ <span className={styles.headerContent}>{header}</span>
22
+ <Button
23
+ className={styles.closeButton}
24
+ hasIconOnly
25
+ iconDescription="Close overlay"
26
+ kind="ghost"
27
+ onClick={close}
28
+ renderIcon={(props) => <Close size={16} {...props} />}
29
+ size="lg"
30
+ />
31
+ </div>
32
+ ) : (
33
+ <Header aria-label="Tablet overlay" className={styles.tabletOverlayHeader}>
34
+ <Button
35
+ onClick={close}
36
+ hasIconOnly
37
+ renderIcon={(props) => <ArrowLeft size={16} {...props} />}
38
+ iconDescription="Close overlay"
39
+ />
40
+ <div className={styles.headerContent}>{header}</div>
41
+ </Header>
42
+ )}
43
+ <div className={styles.overlayContent}>{children}</div>
44
+ <div className={styles.buttonsGroup}>{buttonsGroup}</div>
45
+ </div>
46
+ );
47
+ };
48
+
49
+ export default Overlay;
@@ -0,0 +1,89 @@
1
+ @use '@carbon/styles/scss/spacing';
2
+ @use '@carbon/styles/scss/type';
3
+ @import './style.scss';
4
+
5
+ .desktopOverlay {
6
+ position: fixed;
7
+ right: 0;
8
+ width: 37rem;
9
+ top: spacing.$spacing-09;
10
+ height: calc(100vh - 3rem);
11
+ min-width: 27rem;
12
+ background-color: $ui-01;
13
+ border-left: 1px solid $text-03;
14
+ display: grid;
15
+ grid-template-rows: auto 1fr auto;
16
+ bottom: 0;
17
+ overflow-y: auto;
18
+ z-index: 99999;
19
+ }
20
+
21
+ .tabletOverlay {
22
+ position: fixed;
23
+ top: 0;
24
+ bottom: 0;
25
+ left: 0;
26
+ right: 0;
27
+ z-index: 9999;
28
+ background-color: $ui-01;
29
+ overflow: hidden;
30
+ padding-top: spacing.$spacing-09;
31
+ display: grid;
32
+ grid-template-rows: 1fr auto;
33
+ }
34
+
35
+ .tabletOverlayHeader {
36
+ button {
37
+ background-color: $brand-01 !important;
38
+ }
39
+ .headerContent {
40
+ color: $ui-02;
41
+ }
42
+ }
43
+
44
+ .desktopHeader {
45
+ display: flex;
46
+ justify-content: space-between;
47
+ align-items: center;
48
+ background-color: $ui-03;
49
+ border-bottom: 1px solid $text-03;
50
+ height: 3rem;
51
+ }
52
+
53
+ .headerContent {
54
+ @include type.type-style('heading-compact-02');
55
+ padding: 0 spacing.$spacing-05;
56
+ color: $ui-05;
57
+ }
58
+
59
+ .closeButton {
60
+ border: none;
61
+ border-bottom: 1px solid $text-03;
62
+ background-color: $ui-02;
63
+ }
64
+
65
+ .overlayContent {
66
+ padding: spacing.$spacing-05;
67
+ overflow-y: auto;
68
+ }
69
+
70
+ :global(.omrs-breakpoint-lt-desktop) .overlayContent {
71
+ background-color: #ededed;
72
+ }
73
+
74
+ :global(.omrs-breakpoint-gt-tablet) .overlayContent {
75
+ background-color: white;
76
+ }
77
+
78
+ .buttonsGroup {
79
+ align-self: end;
80
+ }
81
+
82
+ .buttonsGroup button {
83
+ max-width: unset !important;
84
+ }
85
+
86
+ :global(.omrs-breakpoint-lt-desktop) .buttonsGroup {
87
+ padding: spacing.$spacing-06 spacing.$spacing-05;
88
+ background-color: $ui-02;
89
+ }
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { render, screen } from '@testing-library/react';
4
+ import { useLayoutType, isDesktop } from '@openmrs/esm-framework';
5
+ import Overlay from './overlay.component';
6
+
7
+ const mockUseLayoutType = useLayoutType as jest.Mock;
8
+ const mockIsDesktop = isDesktop as jest.Mock;
9
+
10
+ jest.mock('@openmrs/esm-framework');
11
+
12
+ describe('Overlay', () => {
13
+ it('renders the desktop version of the overlay', () => {
14
+ mockUseLayoutType.mockImplementation(() => 'desktop');
15
+ render(
16
+ <Overlay close={() => {}} header="Test Header">
17
+ Overlay content
18
+ </Overlay>,
19
+ );
20
+
21
+ const headerContent = screen.getByText('Test Header');
22
+ const closeButton = screen.getByRole('button', { name: 'Close overlay' });
23
+
24
+ expect(headerContent).toBeInTheDocument();
25
+ expect(closeButton).toBeInTheDocument();
26
+ });
27
+
28
+ it('renders the tablet version of the overlay', () => {
29
+ mockUseLayoutType.mockImplementation(() => 'tablet');
30
+ mockIsDesktop.mockImplementation(() => false);
31
+ render(
32
+ <Overlay close={() => {}} header="Test Header">
33
+ Overlay content
34
+ </Overlay>,
35
+ );
36
+
37
+ const headerContent = screen.getByText('Test Header');
38
+ const backButton = screen.getByRole('button', { name: 'Close overlay' });
39
+
40
+ expect(headerContent).toBeInTheDocument();
41
+ expect(backButton).toBeInTheDocument();
42
+ });
43
+
44
+ it('calls the close function when close button is clicked', async () => {
45
+ const user = userEvent.setup();
46
+ const mockClose = jest.fn();
47
+
48
+ mockUseLayoutType.mockImplementation(() => 'desktop');
49
+ render(
50
+ <Overlay close={mockClose} header="Test Header">
51
+ Overlay content
52
+ </Overlay>,
53
+ );
54
+
55
+ const closeButton = screen.getByRole('button', { name: 'Close overlay' });
56
+ await user.click(closeButton);
57
+
58
+ expect(mockClose).toHaveBeenCalled();
59
+ });
60
+ });
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { BrowserRouter, Route, Routes } from 'react-router-dom';
3
+ import ListDetails from './list-details/list-details.component';
4
+ import ListsDashboard from './lists-dashboard/lists-dashboard.component';
5
+
6
+ const RootComponent: React.FC = () => {
7
+ const patientListsBasename = window.getOpenmrsSpaBase() + 'home/patient-lists';
8
+
9
+ return (
10
+ <BrowserRouter basename={patientListsBasename}>
11
+ <Routes>
12
+ <Route path="/" element={<ListsDashboard />} />
13
+ <Route path="/:patientListUuid" element={<ListDetails />} />
14
+ </Routes>
15
+ </BrowserRouter>
16
+ );
17
+ };
18
+
19
+ export default RootComponent;
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json.openmrs.org/routes.schema.json",
3
+ "backendDependencies": {
4
+ "webservices.rest": "^2.2.0"
5
+ },
6
+ "extensions": [
7
+ {
8
+ "name": "patient-lists-dashboard-link",
9
+ "component": "patientListDashboardLink",
10
+ "slot": "homepage-dashboard-slot",
11
+ "meta": {
12
+ "name": "patient-lists",
13
+ "slot": "patient-lists-dashboard-slot",
14
+ "title": "Patient lists"
15
+ }
16
+ },
17
+ {
18
+ "component": "root",
19
+ "name": "patient-lists-dashboard",
20
+ "slot": "patient-lists-dashboard-slot"
21
+ },
22
+ {
23
+ "name": "list-details-table",
24
+ "component": "listDetailsTable"
25
+ },
26
+ {
27
+ "name": "add-patient-to-patient-list-modal",
28
+ "component": "addPatientToListModal"
29
+ },
30
+ {
31
+ "name": "add-patient-to-patient-list-button",
32
+ "slot": "patient-actions-slot",
33
+ "component": "addPatientToPatientListMenuItem"
34
+ }
35
+ ]
36
+ }
package/src/style.scss ADDED
@@ -0,0 +1,46 @@
1
+ @use '@carbon/styles/scss/spacing';
2
+ @use '@carbon/styles/scss/type';
3
+ @import '~@openmrs/esm-styleguide/src/vars';
4
+
5
+ .productiveHeading02 {
6
+ @include type.type-style('heading-compact-02');
7
+ }
8
+
9
+ .productiveHeading03 {
10
+ @include type.type-style('heading-03');
11
+ }
12
+
13
+ .productiveHeading04 {
14
+ @include type.type-style('heading-04');
15
+ }
16
+
17
+ .bodyLong01 {
18
+ @include type.type-style('body-01');
19
+ }
20
+
21
+ .bodyShort01 {
22
+ @include type.type-style('body-compact-01');
23
+ }
24
+
25
+ .bodyShort02 {
26
+ @include type.type-style('body-compact-02');
27
+ }
28
+
29
+ .text02 {
30
+ color: $text-02;
31
+ }
32
+
33
+ .label01 {
34
+ @include type.type-style('label-01');
35
+ }
36
+
37
+ .modal {
38
+ position: fixed;
39
+ width: 100vw;
40
+ height: 100vh;
41
+ display: grid;
42
+ background-color: rgba(0, 0, 0, 0.5);
43
+ z-index: 9000;
44
+ justify-items: center;
45
+ align-items: center;
46
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "actions": "Actions",
3
+ "addPatientToList": "Add patient to list",
4
+ "addToList": "Add to list",
5
+ "allLists": "All lists",
6
+ "backToListsPage": "Back to lists page",
7
+ "cancel": "Cancel",
8
+ "checkFilters": "Check the filters above",
9
+ "configureList": "Configure your patient list using the fields below",
10
+ "confirmDeletePatientList": "Are you sure you want to delete this patient list?",
11
+ "created": "Created",
12
+ "createdOn": "Created on",
13
+ "createList": "Create list",
14
+ "createNewPatientList": "Create new patient list",
15
+ "createPatientList": "Create patient list",
16
+ "deleted": "Deleted",
17
+ "deletedPatientList": "Deleted patient list",
18
+ "deletePatientList": "Delete patient list",
19
+ "editList": "Edit list",
20
+ "editNameDescription": "Edit name or description",
21
+ "editPatientListHeader": "Edit patient list",
22
+ "emptyList": "This list has no patients",
23
+ "emptyStateIllustration": "Empty state illustration",
24
+ "emptyStateText": "There are no {{listType}} patient lists to display",
25
+ "error": "Error",
26
+ "errorAddPatientToList": "Patient not added to list",
27
+ "errorCopy": "Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.",
28
+ "errorCreatingList": "Error creating list",
29
+ "errorDeletingList": "Error deleting patient list",
30
+ "errorRemovingPatientFromList": "Failed to remove patient from list",
31
+ "errorUpdatingList": "Error updating list",
32
+ "home": "Home",
33
+ "identifier": "Identifier",
34
+ "items": "items",
35
+ "itemsDisplayed": "{{numberOfItemsDisplayed}} items",
36
+ "listCreated": "List created successfully",
37
+ "listDescriptionPlaceholder": "e.g. Patients with diagnosed asthma who may be willing to be a part of a university research study",
38
+ "listName": "List name",
39
+ "listNamePlaceholder": "e.g. Potential research participants",
40
+ "listType": "List type",
41
+ "listUpdated": "List updated successfully",
42
+ "listUpToDate": "The list is now up to date",
43
+ "myLists": "My lists",
44
+ "name": "Name",
45
+ "newList": "New list",
46
+ "newPatientListDescriptionLabel": "Describe the purpose of this list in a few words",
47
+ "newPatientListHeader": "New patient list",
48
+ "newPatientListNameLabel": "List name",
49
+ "nextPage": "Next page",
50
+ "noMatchingLists": "No matching lists to display",
51
+ "noMatchingPatients": "No matching patients to display",
52
+ "noOfPatients": "No. of patients",
53
+ "noPatientListFound": "No patient list found",
54
+ "noPatientsInList": "There are no patients in this list",
55
+ "offlinePatients": "Offline patients",
56
+ "openPatientList": "Add to list",
57
+ "patientListMemberCount_one": "This list has {{count}} patient",
58
+ "patientListMemberCount_other": "This list has {{count}} patients",
59
+ "patientLists": "Patient Lists",
60
+ "patientRemovedFromList": "Patient removed from list",
61
+ "patients": "patients",
62
+ "previousPage": "Previous page",
63
+ "problemCreatingList": "There was a problem creating the list",
64
+ "problemUpdatingList": "There was a problem updating the list",
65
+ "removeFromList": "Remove from list",
66
+ "removePatientFromListConfirmation": "Are you sure you want to remove {{patientName}} from this list?",
67
+ "searchForAListToAddThisPatientTo": "Search for a list to add this patient to.",
68
+ "searchForList": "Search for a list",
69
+ "searchThisList": "Search this list",
70
+ "sex": "Sex",
71
+ "starList": "Star list",
72
+ "starred": "starred",
73
+ "starredLists": "Starred lists",
74
+ "starringPatientListFailed": "Marking patient lists starred / unstarred failed",
75
+ "startDate": "Start Date",
76
+ "submitting": "Submitting",
77
+ "successAddPatientToList": "Patient added to list",
78
+ "successfullyAdded": "Successfully added",
79
+ "systemDefined": "system-defined",
80
+ "systemLists": "System lists",
81
+ "unstarList": "Unstar list",
82
+ "updated": "Updated",
83
+ "userDefined": "user-defined"
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "actions": "الإجراءات",
3
+ "addPatientToList": "أضف المريض إلى القائمة",
4
+ "addToList": "أضف إلى القائمة",
5
+ "allLists": "جميع القوائم",
6
+ "backToListsPage": "Back to lists page",
7
+ "cancel": "إلغاء",
8
+ "checkFilters": "Check the filters above",
9
+ "configureList": "قم بتكوين قائمة المرضى باستخدام الحقول أدناه",
10
+ "confirmDeletePatientList": "Are you sure you want to delete this patient list?",
11
+ "created": "Created",
12
+ "createdOn": "أُنشئت في",
13
+ "createList": "أنشئ قائمة",
14
+ "createNewPatientList": "أنشئ قائمة مرضى جديدة",
15
+ "createPatientList": "أنشئ قائمة مرضى",
16
+ "deleted": "تم الحذف",
17
+ "deletedPatientList": "تم حذف قائمة المرضى",
18
+ "deletePatientList": "Delete patient list",
19
+ "editList": "تعديل القائمة",
20
+ "editNameDescription": "تعديل الاسم/ الوصف",
21
+ "editPatientListHeader": "تعديل قائمة المرضى",
22
+ "emptyList": "This list has no patients",
23
+ "emptyStateIllustration": "Empty state illustration",
24
+ "emptyStateText": "لا توجد قوائم مرضى من نوع {{listType}} لعرضها",
25
+ "error": "خطأ",
26
+ "errorAddPatientToList": "لم يتم إضافة المريض إلى القائمة",
27
+ "errorCopy": "Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.",
28
+ "errorCreatingList": "Error creating list",
29
+ "errorDeletingList": "Error deleting patient list",
30
+ "errorRemovingPatientFromList": "Failed to remove patient from list",
31
+ "errorUpdatingList": "Error updating list",
32
+ "home": "الرئيسية",
33
+ "identifier": "المعرف",
34
+ "items": "العناصر",
35
+ "itemsDisplayed": "{{numberOfItemsDisplayed}} items",
36
+ "listCreated": "List created successfully",
37
+ "listDescriptionPlaceholder": "مثل: المرضى الذين تم تشخيصهم بالربو والذين قد يكونون على استعداد للمشاركة في دراسة جامعية",
38
+ "listName": "اسم القائمة",
39
+ "listNamePlaceholder": "مثل: المشاركون المحتملون في البحث",
40
+ "listType": "نوع القائمة",
41
+ "listUpdated": "List updated successfully",
42
+ "listUpToDate": "The list is now up to date",
43
+ "myLists": "قوائمي",
44
+ "name": "الاسم",
45
+ "newList": "قائمة جديدة",
46
+ "newPatientListDescriptionLabel": "وصف الغرض من هذه القائمة في بضع كلمات",
47
+ "newPatientListHeader": "قائمة مرضى جديدة",
48
+ "newPatientListNameLabel": "اسم القائمة",
49
+ "nextPage": "الصفحة التالية",
50
+ "noMatchingLists": "No matching lists to display",
51
+ "noMatchingPatients": "No matching patients to display",
52
+ "noOfPatients": "عدد المرضى",
53
+ "noPatientListFound": "لم يتم العثور على قائمة المرضى",
54
+ "noPatientsInList": "There are no patients in this list",
55
+ "offlinePatients": "المرضى غير المتصلين",
56
+ "openPatientList": "أضف إلى القائمة",
57
+ "patientListMemberCount_one": "This list has {{count}} patient",
58
+ "patientListMemberCount_other": "This list has {{count}} patients",
59
+ "patientLists": "قوائم المرضى",
60
+ "patientRemovedFromList": "Patient removed from list",
61
+ "patients": "المرضى",
62
+ "previousPage": "الصفحة السابقة",
63
+ "problemCreatingList": "There was a problem creating the list",
64
+ "problemUpdatingList": "There was a problem updating the list",
65
+ "removeFromList": "Remove from list",
66
+ "removePatientFromListConfirmation": "Are you sure you want to remove {{patientName}} from this list?",
67
+ "searchForAListToAddThisPatientTo": "ابحث عن قائمة لإضافة هذا المريض إليها.",
68
+ "searchForList": "ابحث عن قائمة",
69
+ "searchThisList": "ابحث في هذه القائمة",
70
+ "sex": "الجنس",
71
+ "starList": "Star list",
72
+ "starred": "مميز",
73
+ "starredLists": "القوائم المميزة",
74
+ "starringPatientListFailed": "Marking patient lists starred / unstarred failed",
75
+ "startDate": "تاريخ البداية",
76
+ "submitting": "جاري الإرسال",
77
+ "successAddPatientToList": "تمت إضافة المريض إلى القائمة",
78
+ "successfullyAdded": "تمت الإضافة بنجاح",
79
+ "systemDefined": "معرف من النظام",
80
+ "systemLists": "قوائم النظام",
81
+ "unstarList": "Unstar list",
82
+ "updated": "Updated",
83
+ "userDefined": "معرف من المستخدم"
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "actions": "Actions",
3
+ "addPatientToList": "Add patient to list",
4
+ "addToList": "Add to list",
5
+ "allLists": "All lists",
6
+ "backToListsPage": "Back to lists page",
7
+ "cancel": "Cancel",
8
+ "checkFilters": "Check the filters above",
9
+ "configureList": "Configure your patient list using the fields below",
10
+ "confirmDeletePatientList": "Are you sure you want to delete this patient list?",
11
+ "created": "Created",
12
+ "createdOn": "Created on",
13
+ "createList": "Create list",
14
+ "createNewPatientList": "Create new patient list",
15
+ "createPatientList": "Create patient list",
16
+ "deleted": "Deleted",
17
+ "deletedPatientList": "Deleted patient list",
18
+ "deletePatientList": "Delete patient list",
19
+ "editList": "Edit list",
20
+ "editNameDescription": "Edit name or description",
21
+ "editPatientListHeader": "Edit patient list",
22
+ "emptyList": "This list has no patients",
23
+ "emptyStateIllustration": "Empty state illustration",
24
+ "emptyStateText": "There are no {{listType}} patient lists to display",
25
+ "error": "Error",
26
+ "errorAddPatientToList": "Patient not added to list",
27
+ "errorCopy": "Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.",
28
+ "errorCreatingList": "Error creating list",
29
+ "errorDeletingList": "Error deleting patient list",
30
+ "errorRemovingPatientFromList": "Failed to remove patient from list",
31
+ "errorUpdatingList": "Error updating list",
32
+ "home": "Home",
33
+ "identifier": "Identifier",
34
+ "items": "items",
35
+ "itemsDisplayed": "{{numberOfItemsDisplayed}} items",
36
+ "listCreated": "List created successfully",
37
+ "listDescriptionPlaceholder": "e.g. Patients with diagnosed asthma who may be willing to be a part of a university research study",
38
+ "listName": "List name",
39
+ "listNamePlaceholder": "e.g. Potential research participants",
40
+ "listType": "List type",
41
+ "listUpdated": "List updated successfully",
42
+ "listUpToDate": "The list is now up to date",
43
+ "myLists": "My lists",
44
+ "name": "Name",
45
+ "newList": "New list",
46
+ "newPatientListDescriptionLabel": "Describe the purpose of this list in a few words",
47
+ "newPatientListHeader": "New patient list",
48
+ "newPatientListNameLabel": "List name",
49
+ "nextPage": "Next page",
50
+ "noMatchingLists": "No matching lists to display",
51
+ "noMatchingPatients": "No matching patients to display",
52
+ "noOfPatients": "No. of patients",
53
+ "noPatientListFound": "No patient list found",
54
+ "noPatientsInList": "There are no patients in this list",
55
+ "offlinePatients": "Offline patients",
56
+ "openPatientList": "Add to list",
57
+ "patientListMemberCount_one": "This list has {{count}} patient",
58
+ "patientListMemberCount_other": "This list has {{count}} patients",
59
+ "patientLists": "Patient lists",
60
+ "patientRemovedFromList": "Patient removed from list",
61
+ "patients": "patients",
62
+ "previousPage": "Previous page",
63
+ "problemCreatingList": "There was a problem creating the list",
64
+ "problemUpdatingList": "There was a problem updating the list",
65
+ "removeFromList": "Remove from list",
66
+ "removePatientFromListConfirmation": "Are you sure you want to remove {{patientName}} from this list?",
67
+ "searchForAListToAddThisPatientTo": "Search for a list to add this patient to.",
68
+ "searchForList": "Search for a list",
69
+ "searchThisList": "Search this list",
70
+ "sex": "Sex",
71
+ "starList": "Star list",
72
+ "starred": "starred",
73
+ "starredLists": "Starred lists",
74
+ "starringPatientListFailed": "Marking patient lists starred / unstarred failed",
75
+ "startDate": "Start Date",
76
+ "submitting": "Submitting",
77
+ "successAddPatientToList": "Patient added to list",
78
+ "successfullyAdded": "Successfully added",
79
+ "systemDefined": "system-defined",
80
+ "systemLists": "System lists",
81
+ "unstarList": "Unstar list",
82
+ "updated": "Updated",
83
+ "userDefined": "user-defined"
84
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "actions": "Acciones",
3
+ "addPatientToList": "Agregar paciente a la lista",
4
+ "addToList": "Agregar a la lista",
5
+ "allLists": "Todas las listas",
6
+ "backToListsPage": "Back to lists page",
7
+ "cancel": "Cancelar",
8
+ "checkFilters": "Check the filters above",
9
+ "configureList": "Configurar su lista de pacientes utilizando los campos abajo",
10
+ "confirmDeletePatientList": "Are you sure you want to delete this patient list?",
11
+ "created": "Created",
12
+ "createdOn": "Creado el",
13
+ "createList": "Crear lista",
14
+ "createNewPatientList": "Crear nueva lista de pacientes",
15
+ "createPatientList": "Crear lista de pacientes",
16
+ "deleted": "Eliminado",
17
+ "deletedPatientList": "Lista de pacientes eliminada",
18
+ "deletePatientList": "Delete patient list",
19
+ "editList": "Editar lista",
20
+ "editNameDescription": "Editar Nombre/Descripción",
21
+ "editPatientListHeader": "Editar lista de pacientes",
22
+ "emptyList": "This list has no patients",
23
+ "emptyStateIllustration": "Empty state illustration",
24
+ "emptyStateText": "No hay listas de pacientes {{listType}} para mostrar",
25
+ "error": "Error",
26
+ "errorAddPatientToList": "Paciente no agregado a la lista",
27
+ "errorCopy": "Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.",
28
+ "errorCreatingList": "Error creating list",
29
+ "errorDeletingList": "Error deleting patient list",
30
+ "errorRemovingPatientFromList": "Failed to remove patient from list",
31
+ "errorUpdatingList": "Error updating list",
32
+ "home": "Inicio",
33
+ "identifier": "Identificador",
34
+ "items": "elementos",
35
+ "itemsDisplayed": "{{numberOfItemsDisplayed}} items",
36
+ "listCreated": "List created successfully",
37
+ "listDescriptionPlaceholder": "p. ej. Pacientes con asma diagnosticada que podrían estar dispuestos a participar en un estudio de investigación universitaria",
38
+ "listName": "Nombre de la lista",
39
+ "listNamePlaceholder": "p. ej. Participantes potenciales en la investigación",
40
+ "listType": "Tipo de lista",
41
+ "listUpdated": "List updated successfully",
42
+ "listUpToDate": "The list is now up to date",
43
+ "myLists": "Mis listas",
44
+ "name": "Nombre",
45
+ "newList": "Nueva lista",
46
+ "newPatientListDescriptionLabel": "Describa el propósito de esta lista en pocas palabras",
47
+ "newPatientListHeader": "Nueva lista de pacientes",
48
+ "newPatientListNameLabel": "Nombre de la lista",
49
+ "nextPage": "Siguiente página",
50
+ "noMatchingLists": "No matching lists to display",
51
+ "noMatchingPatients": "No matching patients to display",
52
+ "noOfPatients": "N.º de pacientes",
53
+ "noPatientListFound": "No se encontraron listas de pacientes",
54
+ "noPatientsInList": "There are no patients in this list",
55
+ "offlinePatients": "Pacientes sin conexión",
56
+ "openPatientList": "Agregar a la lista",
57
+ "patientListMemberCount_one": "This list has {{count}} patient",
58
+ "patientListMemberCount_other": "This list has {{count}} patients",
59
+ "patientLists": "Listas de pacientes",
60
+ "patientRemovedFromList": "Patient removed from list",
61
+ "patients": "pacientes",
62
+ "previousPage": "Página anterior",
63
+ "problemCreatingList": "There was a problem creating the list",
64
+ "problemUpdatingList": "There was a problem updating the list",
65
+ "removeFromList": "Remove from list",
66
+ "removePatientFromListConfirmation": "Are you sure you want to remove {{patientName}} from this list?",
67
+ "searchForAListToAddThisPatientTo": "Buscar una lista para agregar a este paciente.",
68
+ "searchForList": "Buscar una lista",
69
+ "searchThisList": "Buscar en esta lista",
70
+ "sex": "Sexo",
71
+ "starList": "Star list",
72
+ "starred": "marcado",
73
+ "starredLists": "Listas marcadas",
74
+ "starringPatientListFailed": "Marking patient lists starred / unstarred failed",
75
+ "startDate": "Fecha de inicio",
76
+ "submitting": "Enviando",
77
+ "successAddPatientToList": "Paciente agregado a la lista",
78
+ "successfullyAdded": "Agregado correctamente",
79
+ "systemDefined": "definida por el sistema",
80
+ "systemLists": "Listas del sistema",
81
+ "unstarList": "Unstar list",
82
+ "updated": "Updated",
83
+ "userDefined": "definida por el usuario"
84
+ }