@openmrs/esm-fast-data-entry-app 1.0.1-pre.93 → 1.1.0
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/__mocks__/react-i18next.js +9 -14
- package/dist/12.js +1 -0
- package/dist/12.js.map +1 -0
- package/dist/132.js +1 -1
- package/dist/151.js +2 -0
- package/dist/151.js.LICENSE.txt +5 -0
- package/dist/151.js.map +1 -0
- package/dist/195.js +1 -0
- package/dist/195.js.map +1 -0
- package/dist/197.js +1 -0
- package/dist/221.js +1 -0
- package/dist/221.js.map +1 -0
- package/dist/259.js +1 -0
- package/dist/259.js.map +1 -0
- package/dist/265.js +1 -0
- package/dist/265.js.map +1 -0
- package/dist/269.js +1 -0
- package/dist/269.js.map +1 -0
- package/dist/300.js +1 -0
- package/dist/335.js +1 -0
- package/dist/367.js +1 -0
- package/dist/367.js.map +1 -0
- package/dist/384.js +1 -0
- package/dist/384.js.map +1 -0
- package/dist/540.js +2 -0
- package/dist/540.js.map +1 -0
- package/dist/55.js +1 -0
- package/dist/579.js +1 -0
- package/dist/579.js.map +1 -0
- package/dist/595.js +1 -1
- package/dist/595.js.LICENSE.txt +34 -2
- package/dist/595.js.map +1 -0
- package/dist/602.js +1 -0
- package/dist/602.js.map +1 -0
- package/dist/616.js +1 -0
- package/dist/616.js.map +1 -0
- package/dist/626.js +2 -0
- package/dist/626.js.map +1 -0
- package/dist/652.js +1 -0
- package/dist/77.js +1 -0
- package/dist/77.js.map +1 -0
- package/dist/773.js +2 -0
- package/dist/{68.js.LICENSE.txt → 773.js.LICENSE.txt} +13 -2
- package/dist/773.js.map +1 -0
- package/dist/88.js +1 -0
- package/dist/88.js.map +1 -0
- package/dist/930.js +1 -0
- package/dist/930.js.map +1 -0
- package/dist/961.js +2 -0
- package/dist/961.js.map +1 -0
- package/dist/983.js +1 -0
- package/dist/983.js.map +1 -0
- package/dist/99.js +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -0
- package/dist/openmrs-esm-fast-data-entry-app.js +1 -1
- package/dist/openmrs-esm-fast-data-entry-app.js.buildmanifest.json +380 -156
- package/dist/openmrs-esm-fast-data-entry-app.js.map +1 -0
- package/dist/routes.json +1 -0
- package/jest.config.json +2 -1
- package/package.json +41 -35
- package/prettier.config.js +8 -0
- package/src/CancelModal.tsx +9 -15
- package/src/CompleteModal.tsx +7 -18
- package/src/FormBootstrap.tsx +31 -18
- package/src/Root.tsx +7 -12
- package/src/add-group-modal/AddGroupModal.tsx +73 -112
- package/src/add-group-modal/styles.scss +7 -3
- package/src/config-schema.ts +63 -24
- package/src/constant.ts +1 -1
- package/src/context/FormWorkflowContext.tsx +26 -39
- package/src/context/FormWorkflowReducer.ts +50 -74
- package/src/context/GroupFormWorkflowContext.tsx +40 -59
- package/src/context/GroupFormWorkflowReducer.ts +84 -109
- package/src/declarations.d.ts +3 -0
- package/src/empty-state/EmptyDataIllustration.tsx +4 -16
- package/src/empty-state/EmptyState.tsx +8 -13
- package/src/empty-state/styles.scss +14 -14
- package/src/form-entry-workflow/FormEntryWorkflow.tsx +43 -55
- package/src/form-entry-workflow/form-review-card/FormReviewCard.tsx +7 -7
- package/src/form-entry-workflow/form-review-card/index.ts +1 -1
- package/src/form-entry-workflow/form-review-card/styles.scss +9 -11
- package/src/form-entry-workflow/index.ts +1 -1
- package/src/form-entry-workflow/patient-banner/PatientBanner.test.tsx +5 -5
- package/src/form-entry-workflow/patient-banner/PatientBanner.tsx +14 -27
- package/src/form-entry-workflow/patient-banner/index.ts +1 -1
- package/src/form-entry-workflow/patient-banner/styles.scss +11 -12
- package/src/form-entry-workflow/patient-search-header/PatientSearchHeader.tsx +19 -28
- package/src/form-entry-workflow/patient-search-header/index.ts +1 -1
- package/src/form-entry-workflow/patient-search-header/styles.scss +13 -10
- package/src/form-entry-workflow/styles.scss +11 -13
- package/src/form-entry-workflow/workflow-review/WorkflowReview.tsx +13 -11
- package/src/form-entry-workflow/workflow-review/index.ts +1 -1
- package/src/form-entry-workflow/workflow-review/styles.scss +0 -4
- package/src/forms-app-menu-link.tsx +4 -6
- package/src/forms-page/FormsPage.tsx +23 -51
- package/src/forms-page/forms-table/FormsTable.tsx +22 -42
- package/src/forms-page/forms-table/index.ts +1 -1
- package/src/forms-page/forms-table/styles.scss +4 -5
- package/src/forms-page/index.ts +1 -1
- package/src/forms-page/styles.scss +3 -5
- package/src/group-form-entry-workflow/GroupFormEntryWorkflow.tsx +9 -9
- package/src/group-form-entry-workflow/GroupSessionWorkspace.tsx +77 -117
- package/src/group-form-entry-workflow/SessionDetailsForm.tsx +73 -50
- package/src/group-form-entry-workflow/SessionMetaWorkspace.tsx +20 -28
- package/src/group-form-entry-workflow/attendance-table/AttendanceTable.tsx +15 -29
- package/src/group-form-entry-workflow/attendance-table/index.ts +1 -1
- package/src/group-form-entry-workflow/configurable-questions/ConfigurableQuestionsSection.tsx +45 -0
- package/src/group-form-entry-workflow/group-display-header/GroupDisplayHeader.test.tsx +5 -5
- package/src/group-form-entry-workflow/group-display-header/GroupDisplayHeader.tsx +13 -21
- package/src/group-form-entry-workflow/group-display-header/index.ts +1 -1
- package/src/group-form-entry-workflow/group-display-header/styles.scss +20 -20
- package/src/group-form-entry-workflow/group-search/CompactGroupResults.tsx +24 -35
- package/src/group-form-entry-workflow/group-search/CompactGroupSearch.tsx +13 -15
- package/src/group-form-entry-workflow/group-search/GroupSearch.tsx +22 -38
- package/src/group-form-entry-workflow/group-search/compact-group-result.scss +16 -17
- package/src/group-form-entry-workflow/group-search/compact-group-search.scss +7 -8
- package/src/group-form-entry-workflow/group-search/group-search.scss +20 -23
- package/src/group-form-entry-workflow/group-search-header/GroupSearchHeader.tsx +20 -21
- package/src/group-form-entry-workflow/group-search-header/index.ts +1 -1
- package/src/group-form-entry-workflow/group-search-header/styles.scss +8 -8
- package/src/group-form-entry-workflow/index.ts +1 -1
- package/src/group-form-entry-workflow/styles.scss +13 -16
- package/src/hooks/index.ts +7 -6
- package/src/hooks/useFormState.ts +3 -3
- package/src/hooks/useGetAllForms.ts +7 -15
- package/src/hooks/useGetEncounter.ts +3 -3
- package/src/hooks/useGetPatient.ts +2 -2
- package/src/hooks/useGetPatients.ts +4 -6
- package/src/hooks/useGetSystemSetting.ts +3 -5
- package/src/hooks/useKeyPress.ts +5 -5
- package/src/hooks/usePostEndpoint.ts +10 -10
- package/src/hooks/useSearchEndpoint.ts +23 -40
- package/src/hooks/useSpecificQuestions.ts +75 -0
- package/src/hooks/useStartVisit.ts +18 -28
- package/src/index.ts +12 -76
- package/src/patient-card/PatientCard.tsx +8 -20
- package/src/patient-card/index.ts +1 -1
- package/src/patient-card/styles.scss +2 -4
- package/src/routes.json +24 -0
- package/src/setup-tests.ts +1 -1
- package/src/types.ts +25 -0
- package/tools/i18next-parser.config.js +19 -19
- package/translations/am.json +75 -0
- package/translations/ar.json +75 -0
- package/translations/en.json +7 -1
- package/translations/es.json +75 -0
- package/translations/fr.json +33 -8
- package/translations/he.json +75 -0
- package/translations/km.json +75 -0
- package/tsconfig.json +2 -1
- package/turbo.json +18 -0
- package/webpack.config.js +1 -1
- package/dist/153.js +0 -1
- package/dist/229.js +0 -1
- package/dist/247.js +0 -1
- package/dist/255.js +0 -1
- package/dist/294.js +0 -2
- package/dist/32.js +0 -1
- package/dist/327.js +0 -1
- package/dist/571.js +0 -1
- package/dist/574.js +0 -1
- package/dist/617.js +0 -1
- package/dist/656.js +0 -2
- package/dist/658.js +0 -2
- package/dist/658.js.LICENSE.txt +0 -27
- package/dist/68.js +0 -2
- package/dist/74.js +0 -1
- package/dist/757.js +0 -1
- package/dist/776.js +0 -1
- package/dist/804.js +0 -1
- package/dist/820.js +0 -1
- package/dist/935.js +0 -2
- package/dist/openmrs-esm-fast-data-entry-app.old +0 -1
- package/src/declarations.d.tsx +0 -2
- /package/dist/{294.js.LICENSE.txt → 540.js.LICENSE.txt} +0 -0
- /package/dist/{656.js.LICENSE.txt → 626.js.LICENSE.txt} +0 -0
- /package/dist/{935.js.LICENSE.txt → 961.js.LICENSE.txt} +0 -0
package/src/index.ts
CHANGED
|
@@ -1,91 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* important features of this microfrontend to the app shell. It
|
|
4
|
-
* connects the app shell to the React application(s) that make up this
|
|
5
|
-
* microfrontend.
|
|
6
|
-
*/
|
|
1
|
+
import { getAsyncLifecycle, defineConfigSchema, registerBreadcrumbs } from '@openmrs/esm-framework';
|
|
2
|
+
import { configSchema } from './config-schema';
|
|
7
3
|
|
|
8
|
-
|
|
9
|
-
getAsyncLifecycle,
|
|
10
|
-
defineConfigSchema,
|
|
11
|
-
registerBreadcrumbs,
|
|
12
|
-
} from "@openmrs/esm-framework";
|
|
13
|
-
import { configSchema } from "./config-schema";
|
|
4
|
+
const moduleName = '@openmrs/esm-fast-data-entry-app';
|
|
14
5
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* This tells the app shell how to obtain translation files: that they
|
|
21
|
-
* are JSON files in the directory `../translations` (which you should
|
|
22
|
-
* see in the directory structure).
|
|
23
|
-
*/
|
|
24
|
-
const importTranslation = require.context(
|
|
25
|
-
"../translations",
|
|
26
|
-
false,
|
|
27
|
-
/.json$/,
|
|
28
|
-
"lazy"
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* This tells the app shell what versions of what OpenMRS backend modules
|
|
33
|
-
* are expected. Warnings will appear if suitable modules are not
|
|
34
|
-
* installed. The keys are the part of the module name after
|
|
35
|
-
* `openmrs-module-`; e.g., `openmrs-module-fhir2` becomes `fhir2`.
|
|
36
|
-
*/
|
|
37
|
-
const backendDependencies = {
|
|
38
|
-
fhir2: "^1.2.0",
|
|
39
|
-
"webservices.rest": "^2.2.0",
|
|
6
|
+
const options = {
|
|
7
|
+
featureName: 'fast-data-entry-app',
|
|
8
|
+
moduleName,
|
|
40
9
|
};
|
|
41
10
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
* object which describes how the React application(s) should be
|
|
46
|
-
* rendered.
|
|
47
|
-
*
|
|
48
|
-
* In this example, our return object contains a single page definition.
|
|
49
|
-
* It tells the app shell that the default export of `greeter.tsx`
|
|
50
|
-
* should be rendered when the route matches `hello`. The full route
|
|
51
|
-
* will be `openmrsSpaBase() + 'hello'`, which is usually
|
|
52
|
-
* `/openmrs/spa/hello`.
|
|
53
|
-
*/
|
|
54
|
-
function setupOpenMRS() {
|
|
55
|
-
const moduleName = "@openmrs/esm-fast-data-entry-app";
|
|
11
|
+
export const importTranslation = require.context('../translations', false, /.json$/, 'lazy');
|
|
12
|
+
|
|
13
|
+
export const root = getAsyncLifecycle(() => import('./Root'), options);
|
|
56
14
|
|
|
57
|
-
|
|
58
|
-
featureName: "fast-data-entry-app",
|
|
59
|
-
moduleName,
|
|
60
|
-
};
|
|
15
|
+
export const formsAppMenuLink = getAsyncLifecycle(() => import('./forms-app-menu-link'), options);
|
|
61
16
|
|
|
17
|
+
export function startupApp() {
|
|
62
18
|
defineConfigSchema(moduleName, configSchema);
|
|
63
19
|
|
|
64
20
|
registerBreadcrumbs([
|
|
65
21
|
{
|
|
66
22
|
path: `${window.spaBase}/forms`,
|
|
67
|
-
title:
|
|
23
|
+
title: 'Forms',
|
|
68
24
|
parent: `${window.spaBase}/home`,
|
|
69
25
|
},
|
|
70
26
|
]);
|
|
71
|
-
|
|
72
|
-
return {
|
|
73
|
-
pages: [
|
|
74
|
-
{
|
|
75
|
-
load: getAsyncLifecycle(() => import("./Root"), options),
|
|
76
|
-
route: "forms",
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
extensions: [
|
|
80
|
-
{
|
|
81
|
-
name: "forms-app-link",
|
|
82
|
-
slot: "app-menu-slot",
|
|
83
|
-
load: getAsyncLifecycle(() => import("./forms-app-menu-link"), options),
|
|
84
|
-
online: true,
|
|
85
|
-
offline: true,
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
};
|
|
89
27
|
}
|
|
90
|
-
|
|
91
|
-
export { backendDependencies, importTranslation, setupOpenMRS, version };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CheckmarkOutline, WarningAlt } from
|
|
2
|
-
import { SkeletonText } from
|
|
3
|
-
import React from
|
|
4
|
-
import useGetPatient from
|
|
5
|
-
import styles from
|
|
1
|
+
import { CheckmarkOutline, WarningAlt } from '@carbon/react/icons';
|
|
2
|
+
import { SkeletonText } from '@carbon/react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import useGetPatient from '../hooks/useGetPatient';
|
|
5
|
+
import styles from './styles.scss';
|
|
6
6
|
|
|
7
7
|
const CardContainer = ({ onClick = () => undefined, active, children }) => {
|
|
8
8
|
return (
|
|
@@ -17,12 +17,7 @@ const CardContainer = ({ onClick = () => undefined, active, children }) => {
|
|
|
17
17
|
);
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const PatientCard = ({
|
|
21
|
-
patientUuid,
|
|
22
|
-
activePatientUuid,
|
|
23
|
-
editEncounter,
|
|
24
|
-
encounters,
|
|
25
|
-
}) => {
|
|
20
|
+
const PatientCard = ({ patientUuid, activePatientUuid, editEncounter, encounters }) => {
|
|
26
21
|
const patient = useGetPatient(patientUuid);
|
|
27
22
|
const givenName = patient?.name?.[0]?.given?.[0];
|
|
28
23
|
const familyName = patient?.name?.[0]?.family;
|
|
@@ -39,17 +34,10 @@ const PatientCard = ({
|
|
|
39
34
|
const active = activePatientUuid === patientUuid;
|
|
40
35
|
|
|
41
36
|
return (
|
|
42
|
-
<CardContainer
|
|
43
|
-
onClick={active ? () => undefined : () => editEncounter(patientUuid)}
|
|
44
|
-
active={active}
|
|
45
|
-
>
|
|
37
|
+
<CardContainer onClick={active ? () => undefined : () => editEncounter(patientUuid)} active={active}>
|
|
46
38
|
<div className={styles.patientInfo}>
|
|
47
39
|
<div className={styles.identifier}>{identifier}</div>
|
|
48
|
-
<div
|
|
49
|
-
className={`${styles.displayName} ${
|
|
50
|
-
active && styles.activeDisplayName
|
|
51
|
-
}`}
|
|
52
|
-
>
|
|
40
|
+
<div className={`${styles.displayName} ${active && styles.activeDisplayName}`}>
|
|
53
41
|
{givenName} {familyName}
|
|
54
42
|
</div>
|
|
55
43
|
</div>
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
@use '@carbon/styles/scss/spacing';
|
|
2
1
|
@use '@carbon/colors';
|
|
3
|
-
|
|
4
|
-
// @import '~@openmrs/esm-styleguide/src/vars';
|
|
2
|
+
@use '@carbon/layout';
|
|
5
3
|
|
|
6
4
|
.cardContainer {
|
|
7
|
-
padding:
|
|
5
|
+
padding: layout.$spacing-05;
|
|
8
6
|
display: flex;
|
|
9
7
|
cursor: pointer;
|
|
10
8
|
}
|
package/src/routes.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.openmrs.org/routes.schema.json",
|
|
3
|
+
"backendDependencies": {
|
|
4
|
+
"fhir2": ">=1.2",
|
|
5
|
+
"webservices.rest": "^2.2.0"
|
|
6
|
+
},
|
|
7
|
+
"pages": [
|
|
8
|
+
{
|
|
9
|
+
"component": "root",
|
|
10
|
+
"routeRegex": "forms",
|
|
11
|
+
"online": true,
|
|
12
|
+
"offline": true
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"extensions": [
|
|
16
|
+
{
|
|
17
|
+
"name": "forms-app-link",
|
|
18
|
+
"slot": "app-menu-slot",
|
|
19
|
+
"component": "formsAppMenuLink",
|
|
20
|
+
"online": true,
|
|
21
|
+
"offline": true
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
package/src/setup-tests.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface Concept {
|
|
2
|
+
uuid: string;
|
|
3
|
+
display: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface SpecificQuestion {
|
|
7
|
+
question: {
|
|
8
|
+
id: string;
|
|
9
|
+
display: string;
|
|
10
|
+
defaultAnswer?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
};
|
|
13
|
+
answers: Array<{
|
|
14
|
+
value: string;
|
|
15
|
+
display: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface SpecificQuestionConfig {
|
|
20
|
+
forms: Array<string>;
|
|
21
|
+
questionId: string;
|
|
22
|
+
answers?: Array<string>;
|
|
23
|
+
defaultAnswer?: string;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
contextSeparator:
|
|
2
|
+
contextSeparator: '_',
|
|
3
3
|
// Key separator used in your translation keys
|
|
4
4
|
|
|
5
5
|
createOldCatalogs: false,
|
|
6
6
|
// Save the \_old files
|
|
7
7
|
|
|
8
|
-
defaultNamespace:
|
|
8
|
+
defaultNamespace: 'translations',
|
|
9
9
|
// Default namespace used in your i18next config
|
|
10
10
|
|
|
11
|
-
defaultValue:
|
|
11
|
+
defaultValue: '',
|
|
12
12
|
// Default value to give to empty keys
|
|
13
13
|
// You may also specify a function accepting the locale, namespace, and key as arguments
|
|
14
14
|
|
|
@@ -18,43 +18,43 @@ module.exports = {
|
|
|
18
18
|
keepRemoved: false,
|
|
19
19
|
// Keep keys from the catalog that are no longer in code
|
|
20
20
|
|
|
21
|
-
keySeparator:
|
|
21
|
+
keySeparator: '.',
|
|
22
22
|
// Key separator used in your translation keys
|
|
23
23
|
// If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance.
|
|
24
24
|
|
|
25
25
|
// see below for more details
|
|
26
26
|
lexers: {
|
|
27
|
-
hbs: [
|
|
28
|
-
handlebars: [
|
|
27
|
+
hbs: ['HandlebarsLexer'],
|
|
28
|
+
handlebars: ['HandlebarsLexer'],
|
|
29
29
|
|
|
30
|
-
htm: [
|
|
31
|
-
html: [
|
|
30
|
+
htm: ['HTMLLexer'],
|
|
31
|
+
html: ['HTMLLexer'],
|
|
32
32
|
|
|
33
|
-
mjs: [
|
|
34
|
-
js: [
|
|
35
|
-
ts: [
|
|
36
|
-
jsx: [
|
|
37
|
-
tsx: [
|
|
33
|
+
mjs: ['JavascriptLexer'],
|
|
34
|
+
js: ['JavascriptLexer'], // if you're writing jsx inside .js files, change this to JsxLexer
|
|
35
|
+
ts: ['JavascriptLexer'],
|
|
36
|
+
jsx: ['JsxLexer'],
|
|
37
|
+
tsx: ['JsxLexer'],
|
|
38
38
|
|
|
39
|
-
default: [
|
|
39
|
+
default: ['JavascriptLexer'],
|
|
40
40
|
},
|
|
41
41
|
|
|
42
|
-
lineEnding:
|
|
42
|
+
lineEnding: 'lf',
|
|
43
43
|
// Control the line ending. See options at https://github.com/ryanve/eol
|
|
44
44
|
|
|
45
|
-
locales: [
|
|
45
|
+
locales: ['en', 'am', 'es', 'fr', 'km', 'he', 'ar'],
|
|
46
46
|
// An array of the locales in your applications
|
|
47
47
|
|
|
48
|
-
namespaceSeparator:
|
|
48
|
+
namespaceSeparator: ':',
|
|
49
49
|
// Namespace separator used in your translation keys
|
|
50
50
|
// If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance.
|
|
51
51
|
|
|
52
|
-
output:
|
|
52
|
+
output: '$NAMESPACE/$LOCALE.json',
|
|
53
53
|
// Supports $LOCALE and $NAMESPACE injection
|
|
54
54
|
// Supports JSON (.json) and YAML (.yml) file formats
|
|
55
55
|
// Where to write the locale files relative to process.cwd()
|
|
56
56
|
|
|
57
|
-
pluralSeparator:
|
|
57
|
+
pluralSeparator: '_',
|
|
58
58
|
// Plural separator used in your translation keys
|
|
59
59
|
// If you want to use plain english keys, separators such as `_` might conflict. You might want to set `pluralSeparator` to a different string that does not occur in your keys.
|
|
60
60
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "Actions",
|
|
3
|
+
"allFieldsRequired": "All fields are required unless marked optional",
|
|
4
|
+
"allForms": "All Forms",
|
|
5
|
+
"areYouSure": "Are you sure?",
|
|
6
|
+
"cancel": "Cancel",
|
|
7
|
+
"cancelExplanation": "You will lose any unsaved changes on the current form. Do you want to discard the current session?",
|
|
8
|
+
"changeGroup": "Choose a different group",
|
|
9
|
+
"chooseGroupError": "Please choose a group.",
|
|
10
|
+
"clearSearch": "Clear",
|
|
11
|
+
"complete": "Complete",
|
|
12
|
+
"createGroup": "Create Group",
|
|
13
|
+
"createNewGroup": "Create New Group",
|
|
14
|
+
"createNewPatient": "Create new patient",
|
|
15
|
+
"createNewSession": "Create New Session",
|
|
16
|
+
"discard": "Discard",
|
|
17
|
+
"editGroup": "Edit Group",
|
|
18
|
+
"error": "Error",
|
|
19
|
+
"errorCopy": "Sorry, there was an error. You can try to reload this page, or contact the site administrator and quote the error code above.",
|
|
20
|
+
"errorLoadingData": "Error Loading Data",
|
|
21
|
+
"fastDataEntry": "Fast Data Entry",
|
|
22
|
+
"fillForm": "Fill Form",
|
|
23
|
+
"findGroup": "Find group",
|
|
24
|
+
"formName": "Form Name",
|
|
25
|
+
"formsAppMenuLink": "Fast Data Entry",
|
|
26
|
+
"formsFilled": "Forms filled",
|
|
27
|
+
"goToForm": "Go To Form",
|
|
28
|
+
"groupNameError": "Please enter a group name.",
|
|
29
|
+
"identifier": "Patient ID",
|
|
30
|
+
"markAbsentPatients": "The patients in this group. Patients that are not present in the session should be marked as absent.",
|
|
31
|
+
"members": "members",
|
|
32
|
+
"name": "Name",
|
|
33
|
+
"newGroupName": "New Group Name",
|
|
34
|
+
"newGroupSession": "New Group Session",
|
|
35
|
+
"nextPatient": "Next patient",
|
|
36
|
+
"noFormsFound": "No Forms To Show",
|
|
37
|
+
"noFormsFoundMessage": "No forms could be found for this category. Please double check the form concept uuids and access permissions.",
|
|
38
|
+
"noGroupsFoundMessage": "Sorry, no groups have been found",
|
|
39
|
+
"noMoreResults": "End of search results",
|
|
40
|
+
"noPatientError": "Please enter at least one patient.",
|
|
41
|
+
"or": "or",
|
|
42
|
+
"orLabelName": "OR label name",
|
|
43
|
+
"patientIsPresent": "Patient is present",
|
|
44
|
+
"patientsInGroup": "Patients in group",
|
|
45
|
+
"postError": "POST Error",
|
|
46
|
+
"practitionerName": "Practitioner Name",
|
|
47
|
+
"remove": "Remove",
|
|
48
|
+
"requiredField": "This field is required",
|
|
49
|
+
"resumeGroupSession": "Resume Group Session",
|
|
50
|
+
"resumeSession": "Resume Session",
|
|
51
|
+
"review": "Review",
|
|
52
|
+
"save": "Save",
|
|
53
|
+
"save&close": "Save & Close",
|
|
54
|
+
"saveAndComplete": "Save & Complete",
|
|
55
|
+
"saveExplanation": "Do you want to save the current form and exit the workflow?",
|
|
56
|
+
"saveForm": "Save Form",
|
|
57
|
+
"saveSession": "Save Session",
|
|
58
|
+
"search": "Search",
|
|
59
|
+
"searchForGroup": "Search for a group by name",
|
|
60
|
+
"searchForPatientsToAddToGroup": "Search for patients to add to group",
|
|
61
|
+
"searchResultsText": "search result(s)",
|
|
62
|
+
"selectGroupFirst": "Please select a group first",
|
|
63
|
+
"selectPatientFirst": "Please select a patient first",
|
|
64
|
+
"sessionDate": "Session Date",
|
|
65
|
+
"sessionDetails": "1. Session details",
|
|
66
|
+
"sessionName": "Session Name",
|
|
67
|
+
"sessionNotes": "Session Notes",
|
|
68
|
+
"sessionParticipants": "2. Session participants",
|
|
69
|
+
"sessionSpecificDetails": "3. Specific details",
|
|
70
|
+
"sessionSpecificDetailsDescription": "They will be mapped to form responses for all patients as pre-filled data.",
|
|
71
|
+
"startGroupSession": "Start Group Session",
|
|
72
|
+
"trySearchWithPatientUniqueID": "Try searching with the cohort's description",
|
|
73
|
+
"unknown": "Unknown",
|
|
74
|
+
"unknownPostError": "An unknown error occurred while saving data"
|
|
75
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "الإجراءات",
|
|
3
|
+
"allFieldsRequired": "جميع الحقول مطلوبة ما لم يتم التأشير عليها بأنها اختيارية",
|
|
4
|
+
"allForms": "جميع النماذج",
|
|
5
|
+
"areYouSure": "هل أنت متأكد؟",
|
|
6
|
+
"cancel": "إلغاء",
|
|
7
|
+
"cancelExplanation": "سوف تفقد أي تغييرات لم يتم حفظها في النموذج الحالي. هل ترغب في التخلص من الجلسة الحالية؟",
|
|
8
|
+
"changeGroup": "اختر مجموعة مختلفة",
|
|
9
|
+
"chooseGroupError": "الرجاء اختيار مجموعة.",
|
|
10
|
+
"clearSearch": "مسح",
|
|
11
|
+
"complete": "اكتمال",
|
|
12
|
+
"createGroup": "إنشاء مجموعة",
|
|
13
|
+
"createNewGroup": "إنشاء مجموعة جديدة",
|
|
14
|
+
"createNewPatient": "إنشاء مريض جديد",
|
|
15
|
+
"createNewSession": "إنشاء جلسة جديدة",
|
|
16
|
+
"discard": "تجاهل",
|
|
17
|
+
"editGroup": "تعديل المجموعة",
|
|
18
|
+
"error": "خطأ",
|
|
19
|
+
"errorCopy": "عذرًا، حدث خطأ. يمكنك محاولة إعادة تحميل هذه الصفحة، أو الاتصال بمسؤول الموقع واقتباس رمز الخطأ أعلاه.",
|
|
20
|
+
"errorLoadingData": "خطأ في تحميل البيانات",
|
|
21
|
+
"fastDataEntry": "إدخال البيانات السريع",
|
|
22
|
+
"fillForm": "املأ النموذج",
|
|
23
|
+
"findGroup": "ابحث عن مجموعة",
|
|
24
|
+
"formName": "اسم النموذج",
|
|
25
|
+
"formsAppMenuLink": "إدخال البيانات السريع",
|
|
26
|
+
"formsFilled": "النماذج المملوءة",
|
|
27
|
+
"goToForm": "اذهب إلى النموذج",
|
|
28
|
+
"groupNameError": "الرجاء إدخال اسم المجموعة.",
|
|
29
|
+
"identifier": "هوية المريض",
|
|
30
|
+
"markAbsentPatients": "المرضى في هذه المجموعة. يجب وضع علامة على المرضى الذين ليسوا موجودين في الجلسة كغائبين.",
|
|
31
|
+
"members": "أعضاء",
|
|
32
|
+
"name": "الاسم",
|
|
33
|
+
"newGroupName": "اسم المجموعة الجديد",
|
|
34
|
+
"newGroupSession": "جلسة المجموعة الجديدة",
|
|
35
|
+
"nextPatient": "المريض التالي",
|
|
36
|
+
"noFormsFound": "لا توجد نماذج للعرض",
|
|
37
|
+
"noFormsFoundMessage": "لم يتم العثور على نماذج لهذه الفئة. يرجى التحقق مرة أخرى من uuids مفهوم النموذج وأذونات الوصول.",
|
|
38
|
+
"noGroupsFoundMessage": "عذرًا، لم يتم العثور على مجموعات",
|
|
39
|
+
"noMoreResults": "نهاية نتائج البحث",
|
|
40
|
+
"noPatientError": "الرجاء إدخال مريض واحد على الأقل.",
|
|
41
|
+
"or": "أو",
|
|
42
|
+
"orLabelName": "أو اسم العلامة",
|
|
43
|
+
"patientIsPresent": "المريض موجود",
|
|
44
|
+
"patientsInGroup": "المرضى في المجموعة",
|
|
45
|
+
"postError": "خطأ POST",
|
|
46
|
+
"practitionerName": "اسم الممارس",
|
|
47
|
+
"remove": "إزالة",
|
|
48
|
+
"requiredField": "This field is required",
|
|
49
|
+
"resumeGroupSession": "استئناف جلسة المجموعة",
|
|
50
|
+
"resumeSession": "استئناف الجلسة",
|
|
51
|
+
"review": "Review",
|
|
52
|
+
"save": "حفظ",
|
|
53
|
+
"save&close": "Save & Close",
|
|
54
|
+
"saveAndComplete": "حفظ واكتمال",
|
|
55
|
+
"saveExplanation": "هل ترغب في حفظ النموذج الحالي والخروج من العملية؟",
|
|
56
|
+
"saveForm": "حفظ النموذج",
|
|
57
|
+
"saveSession": "حفظ الجلسة",
|
|
58
|
+
"search": "بحث",
|
|
59
|
+
"searchForGroup": "ابحث عن مجموعة بالاسم",
|
|
60
|
+
"searchForPatientsToAddToGroup": "Search for patients to add to group",
|
|
61
|
+
"searchResultsText": "نتيجة (نتائج) البحث",
|
|
62
|
+
"selectGroupFirst": "الرجاء اختيار مجموعة أولاً",
|
|
63
|
+
"selectPatientFirst": "الرجاء اختيار مريض أولاً",
|
|
64
|
+
"sessionDate": "تاريخ الجلسة",
|
|
65
|
+
"sessionDetails": "1. تفاصيل الجلسة",
|
|
66
|
+
"sessionName": "اسم الجلسة",
|
|
67
|
+
"sessionNotes": "ملاحظات الجلسة",
|
|
68
|
+
"sessionParticipants": "2. المشاركون في الجلسة",
|
|
69
|
+
"sessionSpecificDetails": "3. Specific details",
|
|
70
|
+
"sessionSpecificDetailsDescription": "They will be mapped to form responses for all patients as pre-filled data.",
|
|
71
|
+
"startGroupSession": "بدء جلسة المجموعة",
|
|
72
|
+
"trySearchWithPatientUniqueID": "حاول البحث باستخدام وصف الفوج",
|
|
73
|
+
"unknown": "غير معروف",
|
|
74
|
+
"unknownPostError": "حدث خطأ غير معروف أثناء حفظ البيانات"
|
|
75
|
+
}
|
package/translations/en.json
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"name": "Name",
|
|
33
33
|
"newGroupName": "New Group Name",
|
|
34
34
|
"newGroupSession": "New Group Session",
|
|
35
|
-
"nextPatient": "Next
|
|
35
|
+
"nextPatient": "Next patient",
|
|
36
36
|
"noFormsFound": "No Forms To Show",
|
|
37
37
|
"noFormsFoundMessage": "No forms could be found for this category. Please double check the form concept uuids and access permissions.",
|
|
38
38
|
"noGroupsFoundMessage": "Sorry, no groups have been found",
|
|
@@ -45,15 +45,19 @@
|
|
|
45
45
|
"postError": "POST Error",
|
|
46
46
|
"practitionerName": "Practitioner Name",
|
|
47
47
|
"remove": "Remove",
|
|
48
|
+
"requiredField": "This field is required",
|
|
48
49
|
"resumeGroupSession": "Resume Group Session",
|
|
49
50
|
"resumeSession": "Resume Session",
|
|
51
|
+
"review": "Review",
|
|
50
52
|
"save": "Save",
|
|
53
|
+
"save&close": "Save & Close",
|
|
51
54
|
"saveAndComplete": "Save & Complete",
|
|
52
55
|
"saveExplanation": "Do you want to save the current form and exit the workflow?",
|
|
53
56
|
"saveForm": "Save Form",
|
|
54
57
|
"saveSession": "Save Session",
|
|
55
58
|
"search": "Search",
|
|
56
59
|
"searchForGroup": "Search for a group by name",
|
|
60
|
+
"searchForPatientsToAddToGroup": "Search for patients to add to group",
|
|
57
61
|
"searchResultsText": "search result(s)",
|
|
58
62
|
"selectGroupFirst": "Please select a group first",
|
|
59
63
|
"selectPatientFirst": "Please select a patient first",
|
|
@@ -62,6 +66,8 @@
|
|
|
62
66
|
"sessionName": "Session Name",
|
|
63
67
|
"sessionNotes": "Session Notes",
|
|
64
68
|
"sessionParticipants": "2. Session participants",
|
|
69
|
+
"sessionSpecificDetails": "3. Specific details",
|
|
70
|
+
"sessionSpecificDetailsDescription": "They will be mapped to form responses for all patients as pre-filled data.",
|
|
65
71
|
"startGroupSession": "Start Group Session",
|
|
66
72
|
"trySearchWithPatientUniqueID": "Try searching with the cohort's description",
|
|
67
73
|
"unknown": "Unknown",
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "Acciones",
|
|
3
|
+
"allFieldsRequired": "Todos los campos son obligatorios a menos que estén marcados como opcionales",
|
|
4
|
+
"allForms": "Todas las Formas",
|
|
5
|
+
"areYouSure": "¿Estás seguro?",
|
|
6
|
+
"cancel": "Cancelar",
|
|
7
|
+
"cancelExplanation": "Perderás los cambios no guardados en el formulario actual. ¿Deseas descartar la sesión actual?",
|
|
8
|
+
"changeGroup": "Elegir un grupo diferente",
|
|
9
|
+
"chooseGroupError": "Por favor, elige un grupo.",
|
|
10
|
+
"clearSearch": "Limpiar",
|
|
11
|
+
"complete": "Completar",
|
|
12
|
+
"createGroup": "Crear Grupo",
|
|
13
|
+
"createNewGroup": "Crear Nuevo Grupo",
|
|
14
|
+
"createNewPatient": "Crear nuevo paciente",
|
|
15
|
+
"createNewSession": "Crear Nueva Sesión",
|
|
16
|
+
"discard": "Descartar",
|
|
17
|
+
"editGroup": "Editar Grupo",
|
|
18
|
+
"error": "Error",
|
|
19
|
+
"errorCopy": "Lo siento, ocurrió un error. Puedes intentar recargar esta página o contactar al administrador del sitio e indicar el código de error de arriba.",
|
|
20
|
+
"errorLoadingData": "Error Cargando Datos",
|
|
21
|
+
"fastDataEntry": "Entrada Rápida de Datos",
|
|
22
|
+
"fillForm": "Completar Formulario",
|
|
23
|
+
"findGroup": "Buscar grupo",
|
|
24
|
+
"formName": "Nombre del Formulario",
|
|
25
|
+
"formsAppMenuLink": "Entrada Rápida de Datos",
|
|
26
|
+
"formsFilled": "Formularios completados",
|
|
27
|
+
"goToForm": "Ir al Formulario",
|
|
28
|
+
"groupNameError": "Por favor, ingresa un nombre de grupo.",
|
|
29
|
+
"identifier": "ID del Paciente",
|
|
30
|
+
"markAbsentPatients": "Los pacientes en este grupo. Los pacientes que no estén presentes en la sesión deben ser marcados como ausentes.",
|
|
31
|
+
"members": "miembros",
|
|
32
|
+
"name": "Nombre",
|
|
33
|
+
"newGroupName": "Nuevo Nombre de Grupo",
|
|
34
|
+
"newGroupSession": "Nueva Sesión de Grupo",
|
|
35
|
+
"nextPatient": "Siguiente Paciente",
|
|
36
|
+
"noFormsFound": "No se encontraron Formularios",
|
|
37
|
+
"noFormsFoundMessage": "No se pudieron encontrar formularios para esta categoría. Por favor, verifica los UUID de concepto del formulario y los permisos de acceso.",
|
|
38
|
+
"noGroupsFoundMessage": "Lo siento, no se encontraron grupos.",
|
|
39
|
+
"noMoreResults": "Fin de resultados de búsqueda",
|
|
40
|
+
"noPatientError": "Por favor, ingresa al menos un paciente.",
|
|
41
|
+
"or": "o",
|
|
42
|
+
"orLabelName": "Nombre de Etiqueta OR",
|
|
43
|
+
"patientIsPresent": "Paciente está presente",
|
|
44
|
+
"patientsInGroup": "Pacientes en el grupo",
|
|
45
|
+
"postError": "Error de POST",
|
|
46
|
+
"practitionerName": "Nombre del Practicante",
|
|
47
|
+
"remove": "Eliminar",
|
|
48
|
+
"requiredField": "Este campo es obligatorio",
|
|
49
|
+
"resumeGroupSession": "Continuar Sesión de Grupo",
|
|
50
|
+
"resumeSession": "Continuar Sesión",
|
|
51
|
+
"review": "Revisión",
|
|
52
|
+
"save": "Guardar",
|
|
53
|
+
"save&close": "Guardar y Cerrar",
|
|
54
|
+
"saveAndComplete": "Guardar y Completar",
|
|
55
|
+
"saveExplanation": "¿Deseas guardar el formulario actual y salir del flujo de trabajo?",
|
|
56
|
+
"saveForm": "Guardar Formulario",
|
|
57
|
+
"saveSession": "Guardar Sesión",
|
|
58
|
+
"search": "Buscar",
|
|
59
|
+
"searchForGroup": "Buscar un grupo por nombre",
|
|
60
|
+
"searchForPatientsToAddToGroup": "Buscar pacientes para añadir al grupo",
|
|
61
|
+
"searchResultsText": "resultado(s) de búsqueda",
|
|
62
|
+
"selectGroupFirst": "Por favor, selecciona primero un grupo.",
|
|
63
|
+
"selectPatientFirst": "Por favor, selecciona primero un paciente.",
|
|
64
|
+
"sessionDate": "Fecha de Sesión",
|
|
65
|
+
"sessionDetails": "1. Detalles de la Sesión",
|
|
66
|
+
"sessionName": "Nombre de la Sesión",
|
|
67
|
+
"sessionNotes": "Notas de la Sesión",
|
|
68
|
+
"sessionParticipants": "2. Participantes de la Sesión",
|
|
69
|
+
"sessionSpecificDetails": "3. Detalles específicos",
|
|
70
|
+
"sessionSpecificDetailsDescription": "Se asignarán a las respuestas de los formularios de todos los pacientes como datos precumplimentados.",
|
|
71
|
+
"startGroupSession": "Iniciar Sesión de Grupo",
|
|
72
|
+
"trySearchWithPatientUniqueID": "Intente buscar con la descripción del grupo",
|
|
73
|
+
"unknown": "Desconocido",
|
|
74
|
+
"unknownPostError": "Ocurrió un error desconocido al guardar los datos"
|
|
75
|
+
}
|