@kenyaemr/esm-patient-registration-app 4.5.0 → 4.5.2
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/130.js +2 -0
- package/dist/{858.js.LICENSE.txt → 130.js.LICENSE.txt} +2 -0
- package/dist/130.js.map +1 -0
- package/dist/196.js +1 -0
- package/dist/196.js.map +1 -0
- package/dist/208.js +2 -0
- package/dist/208.js.map +1 -0
- package/dist/317.js +1 -1
- package/dist/317.js.map +1 -1
- package/dist/319.js +1 -0
- package/dist/537.js +1 -0
- package/dist/537.js.map +1 -0
- package/dist/591.js +1 -1
- package/dist/591.js.map +1 -1
- package/dist/62.js +1 -1
- package/dist/62.js.map +1 -1
- package/dist/635.js +1 -1
- package/dist/635.js.map +1 -1
- package/dist/68.js +1 -1
- package/dist/68.js.map +1 -1
- package/dist/735.js +1 -1
- package/dist/742.js +1 -0
- package/dist/742.js.map +1 -0
- package/dist/757.js +1 -1
- package/dist/784.js.map +1 -1
- package/dist/788.js +1 -0
- package/dist/807.js +1 -1
- package/dist/821.js +1 -1
- package/dist/821.js.map +1 -1
- package/dist/833.js +1 -1
- package/dist/857.js +1 -0
- package/dist/857.js.map +1 -0
- package/dist/9.js +1 -1
- package/dist/9.js.map +1 -1
- package/dist/kenyaemr-esm-patient-registration-app.js +1 -1
- package/dist/kenyaemr-esm-patient-registration-app.js.buildmanifest.json +133 -137
- package/dist/kenyaemr-esm-patient-registration-app.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/routes.json +1 -0
- package/package.json +2 -2
- package/src/add-patient-link.test.tsx +18 -0
- package/src/config-schema.ts +19 -5
- package/src/index.ts +33 -105
- package/src/nav-link.test.tsx +13 -0
- package/src/patient-registration/field/address/address-field.component.tsx +1 -1
- package/src/patient-registration/field/address/address-hierarchy.resource.tsx +2 -1
- package/src/patient-registration/field/field.test.tsx +291 -0
- package/src/patient-registration/field/name/name-field.component.tsx +45 -28
- package/src/patient-registration/form-manager.ts +1 -0
- package/src/patient-registration/input/combo-input/combo-input.component.tsx +28 -19
- package/src/patient-registration/input/input.scss +5 -0
- package/src/patient-registration/section/death-info/death-info-section.test.tsx +9 -6
- package/src/root.component.tsx +11 -11
- package/src/routes.json +46 -0
- package/translations/am.json +91 -0
- package/translations/es.json +91 -0
- package/translations/fr.json +8 -6
- package/translations/he.json +8 -6
- package/translations/km.json +8 -6
- package/dist/144.js +0 -2
- package/dist/144.js.map +0 -1
- package/dist/207.js +0 -1
- package/dist/207.js.map +0 -1
- package/dist/330.js +0 -1
- package/dist/330.js.map +0 -1
- package/dist/59.js +0 -1
- package/dist/59.js.map +0 -1
- package/dist/805.js +0 -1
- package/dist/805.js.map +0 -1
- package/dist/858.js +0 -2
- package/dist/858.js.map +0 -1
- package/dist/876.js +0 -1
- package/dist/876.js.map +0 -1
- package/dist/887.js +0 -1
- package/dist/887.js.map +0 -1
- package/dist/kenyaemr-esm-patient-registration-app.old +0 -1
- /package/dist/{144.js.LICENSE.txt → 208.js.LICENSE.txt} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { TextInput, Layer } from '@carbon/react';
|
|
3
3
|
import SelectionTick from './selection-tick.component';
|
|
4
4
|
import styles from '../input.scss';
|
|
@@ -26,18 +26,6 @@ const ComboInput: React.FC<ComboInputProps> = ({ entries, fieldProps, handleInpu
|
|
|
26
26
|
setHighlightedEntry(-1);
|
|
27
27
|
}, [setShowEntries, setHighlightedEntry]);
|
|
28
28
|
|
|
29
|
-
const handleBlur = useCallback(
|
|
30
|
-
(e) => {
|
|
31
|
-
// This check is in place to not hide the entries when an entry is clicked
|
|
32
|
-
// Else the onClick of the entry will not be counted.
|
|
33
|
-
if (!comboInputRef?.current?.contains(e.target)) {
|
|
34
|
-
setShowEntries(false);
|
|
35
|
-
}
|
|
36
|
-
setHighlightedEntry(-1);
|
|
37
|
-
},
|
|
38
|
-
[setShowEntries, setHighlightedEntry],
|
|
39
|
-
);
|
|
40
|
-
|
|
41
29
|
const filteredEntries = useMemo(() => {
|
|
42
30
|
if (!entries) {
|
|
43
31
|
return [];
|
|
@@ -60,6 +48,12 @@ const ComboInput: React.FC<ComboInputProps> = ({ entries, fieldProps, handleInpu
|
|
|
60
48
|
const handleKeyPress = useCallback(
|
|
61
49
|
(e: KeyboardEvent) => {
|
|
62
50
|
const totalResults = filteredEntries.length ?? 0;
|
|
51
|
+
|
|
52
|
+
if (e.key === 'Tab') {
|
|
53
|
+
setShowEntries(false);
|
|
54
|
+
setHighlightedEntry(-1);
|
|
55
|
+
}
|
|
56
|
+
|
|
63
57
|
if (e.key === 'ArrowUp') {
|
|
64
58
|
setHighlightedEntry((prev) => Math.max(-1, prev - 1));
|
|
65
59
|
} else if (e.key === 'ArrowDown') {
|
|
@@ -68,24 +62,39 @@ const ComboInput: React.FC<ComboInputProps> = ({ entries, fieldProps, handleInpu
|
|
|
68
62
|
handleOptionClick(filteredEntries[highlightedEntry], e);
|
|
69
63
|
}
|
|
70
64
|
},
|
|
71
|
-
[highlightedEntry, handleOptionClick, filteredEntries, setHighlightedEntry],
|
|
65
|
+
[highlightedEntry, handleOptionClick, filteredEntries, setHighlightedEntry, setShowEntries],
|
|
72
66
|
);
|
|
73
67
|
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
const listener = (e) => {
|
|
70
|
+
if (!comboInputRef.current.contains(e.target as Node)) {
|
|
71
|
+
setShowEntries(false);
|
|
72
|
+
setHighlightedEntry(-1);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
window.addEventListener('click', listener);
|
|
76
|
+
return () => {
|
|
77
|
+
window.removeEventListener('click', listener);
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
|
|
74
81
|
return (
|
|
75
82
|
<div className={styles.comboInput} ref={comboInputRef}>
|
|
76
83
|
<Layer>
|
|
77
84
|
<TextInput
|
|
78
85
|
{...fieldProps}
|
|
79
|
-
onChange={(e) =>
|
|
86
|
+
onChange={(e) => {
|
|
87
|
+
setHighlightedEntry(-1);
|
|
88
|
+
handleInputChange(e.target.value);
|
|
89
|
+
}}
|
|
80
90
|
onFocus={handleFocus}
|
|
81
|
-
onBlur={handleBlur}
|
|
82
91
|
autoComplete={'off'}
|
|
83
92
|
onKeyDown={handleKeyPress}
|
|
84
93
|
/>
|
|
85
94
|
</Layer>
|
|
86
95
|
<div className={styles.comboInputEntries}>
|
|
87
96
|
{showEntries && (
|
|
88
|
-
<div id="downshift-1-menu" style={{ height: filteredEntries.length > 5
|
|
97
|
+
<div id="downshift-1-menu" style={{ height: filteredEntries.length > 5 ? "15rem" : "" }} className="cds--list-box__menu" role="listbox">
|
|
89
98
|
{filteredEntries.map((entry, indx) => (
|
|
90
99
|
<div
|
|
91
100
|
key={indx}
|
|
@@ -97,7 +106,7 @@ const ComboInput: React.FC<ComboInputProps> = ({ entries, fieldProps, handleInpu
|
|
|
97
106
|
aria-selected="true"
|
|
98
107
|
onClick={() => handleOptionClick(entry)}>
|
|
99
108
|
<div
|
|
100
|
-
className={`cds--list-box__menu-item__option ${entry === value && 'cds--list-box__menu-item--active'
|
|
109
|
+
className={`cds--list-box__menu-item__option ${styles.comboInputItemOption} ${entry === value && 'cds--list-box__menu-item--active'
|
|
101
110
|
}`}>
|
|
102
111
|
{entry}
|
|
103
112
|
{entry === value && <SelectionTick />}
|
|
@@ -107,7 +116,7 @@ const ComboInput: React.FC<ComboInputProps> = ({ entries, fieldProps, handleInpu
|
|
|
107
116
|
</div>
|
|
108
117
|
)}
|
|
109
118
|
</div>
|
|
110
|
-
</div>
|
|
119
|
+
</div >
|
|
111
120
|
);
|
|
112
121
|
};
|
|
113
122
|
|
|
@@ -4,6 +4,7 @@ import { Formik, Form } from 'formik';
|
|
|
4
4
|
import { initialFormValues } from '../../patient-registration.component';
|
|
5
5
|
import { DeathInfoSection } from './death-info-section.component';
|
|
6
6
|
import { FormValues } from '../../patient-registration-types';
|
|
7
|
+
import { PatientRegistrationContext } from '../../patient-registration-context';
|
|
7
8
|
|
|
8
9
|
jest.mock('@openmrs/esm-framework', () => {
|
|
9
10
|
const originalModule = jest.requireActual('@openmrs/esm-framework');
|
|
@@ -15,16 +16,18 @@ jest.mock('@openmrs/esm-framework', () => {
|
|
|
15
16
|
});
|
|
16
17
|
|
|
17
18
|
// TODO: Implement feature and get tests to pass
|
|
18
|
-
describe
|
|
19
|
+
describe('death info section', () => {
|
|
19
20
|
const formValues: FormValues = initialFormValues;
|
|
20
21
|
|
|
21
22
|
const setupSection = async (isDead?: boolean) => {
|
|
22
23
|
render(
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
<PatientRegistrationContext.Provider value={{ values: { isDead: isDead || false } }}>
|
|
25
|
+
<Formik initialValues={{ ...initialFormValues, isDead }} onSubmit={null}>
|
|
26
|
+
<Form>
|
|
27
|
+
<DeathInfoSection />
|
|
28
|
+
</Form>
|
|
29
|
+
</Formik>
|
|
30
|
+
</PatientRegistrationContext.Provider>,
|
|
28
31
|
);
|
|
29
32
|
const allInputs = screen.queryAllByLabelText(
|
|
30
33
|
(content, element) => element.tagName.toLowerCase() === 'input',
|
package/src/root.component.tsx
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
2
|
import { BrowserRouter, Route, Routes } from 'react-router-dom';
|
|
3
3
|
import { Grid, Row } from '@carbon/react';
|
|
4
|
-
import { ExtensionSlot, useSession } from '@openmrs/esm-framework';
|
|
4
|
+
import { ExtensionSlot, useConnectivity, useSession } from '@openmrs/esm-framework';
|
|
5
5
|
import {
|
|
6
|
-
Resources,
|
|
7
6
|
ResourcesContext,
|
|
8
7
|
fetchAddressTemplate,
|
|
9
8
|
fetchAllRelationshipTypes,
|
|
10
9
|
fetchPatientIdentifierTypesWithSources,
|
|
11
10
|
} from './offline.resources';
|
|
12
|
-
import {
|
|
11
|
+
import { FormManager } from './patient-registration/form-manager';
|
|
13
12
|
import { PatientRegistration, PatientRegistrationProps } from './patient-registration/patient-registration.component';
|
|
14
13
|
import useSWRImmutable from 'swr/immutable';
|
|
15
14
|
import styles from './root.scss';
|
|
16
|
-
export interface RootProps extends PatientRegistrationProps, Resources {
|
|
17
|
-
savePatientForm: SavePatientForm;
|
|
18
|
-
isOffline: boolean;
|
|
19
|
-
}
|
|
20
15
|
|
|
21
|
-
export default function Root(
|
|
16
|
+
export default function Root() {
|
|
17
|
+
const isOnline = useConnectivity();
|
|
22
18
|
const currentSession = useSession();
|
|
23
19
|
const { data: addressTemplate } = useSWRImmutable('patientRegistrationAddressTemplate', fetchAddressTemplate);
|
|
24
20
|
const { data: relationshipTypes } = useSWRImmutable(
|
|
@@ -29,6 +25,10 @@ export default function Root({ savePatientForm, isOffline }: RootProps) {
|
|
|
29
25
|
'patientRegistrationPatientIdentifiers',
|
|
30
26
|
fetchPatientIdentifierTypesWithSources,
|
|
31
27
|
);
|
|
28
|
+
const savePatientForm = useMemo(
|
|
29
|
+
() => (isOnline ? FormManager.savePatientFormOnline : FormManager.savePatientFormOffline),
|
|
30
|
+
[isOnline],
|
|
31
|
+
);
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
34
|
<main className={`omrs-main-content ${styles.root}`}>
|
|
@@ -47,11 +47,11 @@ export default function Root({ savePatientForm, isOffline }: RootProps) {
|
|
|
47
47
|
<Routes>
|
|
48
48
|
<Route
|
|
49
49
|
path="patient-registration"
|
|
50
|
-
element={<PatientRegistration savePatientForm={savePatientForm} isOffline={
|
|
50
|
+
element={<PatientRegistration savePatientForm={savePatientForm} isOffline={!isOnline} />}
|
|
51
51
|
/>
|
|
52
52
|
<Route
|
|
53
53
|
path="patient/:patientUuid/edit"
|
|
54
|
-
element={<PatientRegistration savePatientForm={savePatientForm} isOffline={
|
|
54
|
+
element={<PatientRegistration savePatientForm={savePatientForm} isOffline={!isOnline} />}
|
|
55
55
|
/>
|
|
56
56
|
</Routes>
|
|
57
57
|
</BrowserRouter>
|
package/src/routes.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.openmrs.org/routes.schema.json",
|
|
3
|
+
"backendDependencies": {
|
|
4
|
+
"webservices.rest": "^2.24.0"
|
|
5
|
+
},
|
|
6
|
+
"pages": [{
|
|
7
|
+
"component": "root",
|
|
8
|
+
"route": "patient-registration",
|
|
9
|
+
"online": true,
|
|
10
|
+
"offline": true
|
|
11
|
+
}, {
|
|
12
|
+
"component": "editPatient",
|
|
13
|
+
"routeRegex": "patient\\/([a-zA-Z0-9\\-]+)\\/edit",
|
|
14
|
+
"online": true,
|
|
15
|
+
"offline": true
|
|
16
|
+
}],
|
|
17
|
+
"extensions": [{
|
|
18
|
+
"component": "addPatientLink",
|
|
19
|
+
"name": "add-patient-action",
|
|
20
|
+
"slot": "top-nav-actions-slot",
|
|
21
|
+
"online": true,
|
|
22
|
+
"offline": true
|
|
23
|
+
}, {
|
|
24
|
+
"component": "cancelPatientEditModal",
|
|
25
|
+
"name": "cancel-patient-edit-modal",
|
|
26
|
+
"online": true,
|
|
27
|
+
"offline": true
|
|
28
|
+
}, {
|
|
29
|
+
"component": "patientPhoto",
|
|
30
|
+
"name": "patient-photo-widget",
|
|
31
|
+
"slot": "patient-photo-slot",
|
|
32
|
+
"online": true,
|
|
33
|
+
"offline": true
|
|
34
|
+
}, {
|
|
35
|
+
"component": "editPatientDetailsButton",
|
|
36
|
+
"name": "edit-patient-details-button",
|
|
37
|
+
"slot": "patient-actions-slot",
|
|
38
|
+
"online": true,
|
|
39
|
+
"offline": true
|
|
40
|
+
}, {
|
|
41
|
+
"component": "deleteIdentifierConfirmationModal",
|
|
42
|
+
"name": "delete-identifier-confirmation-modal",
|
|
43
|
+
"online": true,
|
|
44
|
+
"offline": true
|
|
45
|
+
}]
|
|
46
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"addRelationshipButtonText": "Add Relationship",
|
|
3
|
+
"address1": "Address line 1",
|
|
4
|
+
"address2": "Address line 2",
|
|
5
|
+
"addressHeader": "Address",
|
|
6
|
+
"allFieldsRequiredText": "All fields are required unless marked optional",
|
|
7
|
+
"autoGeneratedPlaceholderText": "Auto-generated",
|
|
8
|
+
"birthdayNotInTheFuture": "",
|
|
9
|
+
"birthdayRequired": "",
|
|
10
|
+
"birthFieldLabelText": "Birth",
|
|
11
|
+
"cancel": "Cancel",
|
|
12
|
+
"causeOfDeathInputLabel": "Cause of Death",
|
|
13
|
+
"cityVillage": "city",
|
|
14
|
+
"configure": "Configure",
|
|
15
|
+
"contactSection": "Contact Details",
|
|
16
|
+
"country": "Country",
|
|
17
|
+
"countyDistrict": "District",
|
|
18
|
+
"createNew": "Create New",
|
|
19
|
+
"dateOfBirthLabelText": "Date of Birth",
|
|
20
|
+
"deathDateInputLabel": "Date of Death",
|
|
21
|
+
"deathdayNotInTheFuture": "",
|
|
22
|
+
"deathSection": "Death Info",
|
|
23
|
+
"deleteIdentifierTooltip": "Delete",
|
|
24
|
+
"deleteRelationshipTooltipText": "Delete",
|
|
25
|
+
"demographicsSection": "Basic Info",
|
|
26
|
+
"discard": "Discard",
|
|
27
|
+
"discardModalBody": "The changes you made to this patient's details have not been saved. Discard changes?",
|
|
28
|
+
"discardModalHeader": "Confirm Discard Changes",
|
|
29
|
+
"dobToggleLabelText": "Date of Birth Known?",
|
|
30
|
+
"edit": "Edit",
|
|
31
|
+
"editIdentifierTooltip": "Edit",
|
|
32
|
+
"editPatientDetails": "Edit patient details",
|
|
33
|
+
"error": "Error",
|
|
34
|
+
"errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
|
|
35
|
+
"estimatedAgeInMonthsLabelText": "Estimated age in months",
|
|
36
|
+
"estimatedAgeInYearsLabelText": "Estimated age in years",
|
|
37
|
+
"familyNameLabelText": "Family Name",
|
|
38
|
+
"familyNameRequired": "",
|
|
39
|
+
"female": "Female",
|
|
40
|
+
"fieldErrorTitleMessage": "The following fields have errors:",
|
|
41
|
+
"fullNameLabelText": "Full Name",
|
|
42
|
+
"genderLabelText": "Sex",
|
|
43
|
+
"genderRequired": "",
|
|
44
|
+
"genderUnspecified": "",
|
|
45
|
+
"givenNameLabelText": "First Name",
|
|
46
|
+
"givenNameRequired": "",
|
|
47
|
+
"identifierValueRequired": "Identifier value is required",
|
|
48
|
+
"idFieldLabelText": "Identifiers",
|
|
49
|
+
"incompleteForm": "Incomplete form",
|
|
50
|
+
"invalidEmail": "",
|
|
51
|
+
"invalidInput": "Invalid Input",
|
|
52
|
+
"isDeadInputLabel": "Is Dead",
|
|
53
|
+
"jumpTo": "Jump to",
|
|
54
|
+
"loadingResults": "Loading results",
|
|
55
|
+
"male": "Male",
|
|
56
|
+
"middleNameLabelText": "Middle Name",
|
|
57
|
+
"negativeMonths": "",
|
|
58
|
+
"negativeYears": "",
|
|
59
|
+
"no": "No",
|
|
60
|
+
"noResultsFound": "No results found",
|
|
61
|
+
"numberInNameDubious": "",
|
|
62
|
+
"optional": "optional",
|
|
63
|
+
"other": "Other",
|
|
64
|
+
"patient": "Patient",
|
|
65
|
+
"patientNameKnown": "Patient's Name is Known?",
|
|
66
|
+
"postalCode": "Postal code",
|
|
67
|
+
"registerPatient": "Register Patient",
|
|
68
|
+
"registrationSuccessToastDescription": "The patient can now be found by searching for them using their name or ID number",
|
|
69
|
+
"registrationSuccessToastTitle": "New Patient Created",
|
|
70
|
+
"relationship": "Relationship",
|
|
71
|
+
"relationshipPlaceholder": "Relationship",
|
|
72
|
+
"relationshipRemovedText": "Relationship removed",
|
|
73
|
+
"relationshipsSection": "Relationships",
|
|
74
|
+
"relationshipToPatient": "Relationship to patient",
|
|
75
|
+
"relativeFullNameLabelText": "Full name",
|
|
76
|
+
"relativeNamePlaceholder": "Firstname Familyname",
|
|
77
|
+
"resetIdentifierTooltip": "Reset",
|
|
78
|
+
"restoreRelationshipActionButton": "Undo",
|
|
79
|
+
"searchAddress": "Search address",
|
|
80
|
+
"selectAnOption": "Select an option",
|
|
81
|
+
"sexFieldLabelText": "Sex",
|
|
82
|
+
"stateProvince": "State",
|
|
83
|
+
"stroke": "Stroke",
|
|
84
|
+
"unableToFetch": "Unable to fetch person attribute type - {personattributetype}",
|
|
85
|
+
"unknown": "Unknown",
|
|
86
|
+
"updatePatient": "Update Patient",
|
|
87
|
+
"updationSuccessToastDescription": "The patient's information has been successfully updated",
|
|
88
|
+
"updationSuccessToastTitle": "Patient Details Updated",
|
|
89
|
+
"yearsEstimateRequired": "",
|
|
90
|
+
"yes": "Yes"
|
|
91
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"addRelationshipButtonText": "Add Relationship",
|
|
3
|
+
"address1": "Address line 1",
|
|
4
|
+
"address2": "Address line 2",
|
|
5
|
+
"addressHeader": "Address",
|
|
6
|
+
"allFieldsRequiredText": "All fields are required unless marked optional",
|
|
7
|
+
"autoGeneratedPlaceholderText": "Auto-generated",
|
|
8
|
+
"birthdayNotInTheFuture": "",
|
|
9
|
+
"birthdayRequired": "",
|
|
10
|
+
"birthFieldLabelText": "Birth",
|
|
11
|
+
"cancel": "Cancel",
|
|
12
|
+
"causeOfDeathInputLabel": "Cause of Death",
|
|
13
|
+
"cityVillage": "city",
|
|
14
|
+
"configure": "Configure",
|
|
15
|
+
"contactSection": "Contact Details",
|
|
16
|
+
"country": "Country",
|
|
17
|
+
"countyDistrict": "District",
|
|
18
|
+
"createNew": "Create New",
|
|
19
|
+
"dateOfBirthLabelText": "Date of Birth",
|
|
20
|
+
"deathDateInputLabel": "Date of Death",
|
|
21
|
+
"deathdayNotInTheFuture": "",
|
|
22
|
+
"deathSection": "Death Info",
|
|
23
|
+
"deleteIdentifierTooltip": "Delete",
|
|
24
|
+
"deleteRelationshipTooltipText": "Delete",
|
|
25
|
+
"demographicsSection": "Basic Info",
|
|
26
|
+
"discard": "Discard",
|
|
27
|
+
"discardModalBody": "The changes you made to this patient's details have not been saved. Discard changes?",
|
|
28
|
+
"discardModalHeader": "Confirm Discard Changes",
|
|
29
|
+
"dobToggleLabelText": "Date of Birth Known?",
|
|
30
|
+
"edit": "Edit",
|
|
31
|
+
"editIdentifierTooltip": "Edit",
|
|
32
|
+
"editPatientDetails": "Edit patient details",
|
|
33
|
+
"error": "Error",
|
|
34
|
+
"errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
|
|
35
|
+
"estimatedAgeInMonthsLabelText": "Estimated age in months",
|
|
36
|
+
"estimatedAgeInYearsLabelText": "Estimated age in years",
|
|
37
|
+
"familyNameLabelText": "Family Name",
|
|
38
|
+
"familyNameRequired": "",
|
|
39
|
+
"female": "Female",
|
|
40
|
+
"fieldErrorTitleMessage": "The following fields have errors:",
|
|
41
|
+
"fullNameLabelText": "Full Name",
|
|
42
|
+
"genderLabelText": "Sex",
|
|
43
|
+
"genderRequired": "",
|
|
44
|
+
"genderUnspecified": "",
|
|
45
|
+
"givenNameLabelText": "First Name",
|
|
46
|
+
"givenNameRequired": "",
|
|
47
|
+
"identifierValueRequired": "Identifier value is required",
|
|
48
|
+
"idFieldLabelText": "Identifiers",
|
|
49
|
+
"incompleteForm": "Incomplete form",
|
|
50
|
+
"invalidEmail": "",
|
|
51
|
+
"invalidInput": "Invalid Input",
|
|
52
|
+
"isDeadInputLabel": "Is Dead",
|
|
53
|
+
"jumpTo": "Jump to",
|
|
54
|
+
"loadingResults": "Loading results",
|
|
55
|
+
"male": "Male",
|
|
56
|
+
"middleNameLabelText": "Middle Name",
|
|
57
|
+
"negativeMonths": "",
|
|
58
|
+
"negativeYears": "",
|
|
59
|
+
"no": "No",
|
|
60
|
+
"noResultsFound": "No results found",
|
|
61
|
+
"numberInNameDubious": "",
|
|
62
|
+
"optional": "optional",
|
|
63
|
+
"other": "Other",
|
|
64
|
+
"patient": "Patient",
|
|
65
|
+
"patientNameKnown": "Patient's Name is Known?",
|
|
66
|
+
"postalCode": "Postal code",
|
|
67
|
+
"registerPatient": "Register Patient",
|
|
68
|
+
"registrationSuccessToastDescription": "The patient can now be found by searching for them using their name or ID number",
|
|
69
|
+
"registrationSuccessToastTitle": "New Patient Created",
|
|
70
|
+
"relationship": "Relationship",
|
|
71
|
+
"relationshipPlaceholder": "Relationship",
|
|
72
|
+
"relationshipRemovedText": "Relationship removed",
|
|
73
|
+
"relationshipsSection": "Relationships",
|
|
74
|
+
"relationshipToPatient": "Relationship to patient",
|
|
75
|
+
"relativeFullNameLabelText": "Full name",
|
|
76
|
+
"relativeNamePlaceholder": "Firstname Familyname",
|
|
77
|
+
"resetIdentifierTooltip": "Reset",
|
|
78
|
+
"restoreRelationshipActionButton": "Undo",
|
|
79
|
+
"searchAddress": "Search address",
|
|
80
|
+
"selectAnOption": "Select an option",
|
|
81
|
+
"sexFieldLabelText": "Sex",
|
|
82
|
+
"stateProvince": "State",
|
|
83
|
+
"stroke": "Stroke",
|
|
84
|
+
"unableToFetch": "Unable to fetch person attribute type - {personattributetype}",
|
|
85
|
+
"unknown": "Unknown",
|
|
86
|
+
"updatePatient": "Update Patient",
|
|
87
|
+
"updationSuccessToastDescription": "The patient's information has been successfully updated",
|
|
88
|
+
"updationSuccessToastTitle": "Patient Details Updated",
|
|
89
|
+
"yearsEstimateRequired": "",
|
|
90
|
+
"yes": "Yes"
|
|
91
|
+
}
|
package/translations/fr.json
CHANGED
|
@@ -12,14 +12,17 @@
|
|
|
12
12
|
"causeOfDeathInputLabel": "Cause de décès",
|
|
13
13
|
"cityVillage": "Ville",
|
|
14
14
|
"configure": "Configurer",
|
|
15
|
+
"contactSection": "Contact Details",
|
|
15
16
|
"country": "Pays",
|
|
16
17
|
"countyDistrict": "District",
|
|
17
18
|
"createNew": "Créer un nouveau",
|
|
18
19
|
"dateOfBirthLabelText": "Date de naissance",
|
|
19
20
|
"deathDateInputLabel": "Date de décès",
|
|
20
21
|
"deathdayNotInTheFuture": "Le décès ne peut pas être dans le futur",
|
|
22
|
+
"deathSection": "Death Info",
|
|
21
23
|
"deleteIdentifierTooltip": "Effacer",
|
|
22
24
|
"deleteRelationshipTooltipText": "Effacer",
|
|
25
|
+
"demographicsSection": "Basic Info",
|
|
23
26
|
"discard": "Abandonner",
|
|
24
27
|
"discardModalBody": "Les modifications que vous avez apportées aux données de ce patient n'ont pas été enregistrées. Annuler les modifications?",
|
|
25
28
|
"discardModalHeader": "Confirmer l'abandon des modifications",
|
|
@@ -27,7 +30,8 @@
|
|
|
27
30
|
"edit": "Editer",
|
|
28
31
|
"editIdentifierTooltip": "Editer",
|
|
29
32
|
"editPatientDetails": "Editer les données du patient",
|
|
30
|
-
"
|
|
33
|
+
"error": "Error",
|
|
34
|
+
"errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
|
|
31
35
|
"estimatedAgeInMonthsLabelText": "Âge estimé en mois",
|
|
32
36
|
"estimatedAgeInYearsLabelText": "Âge estimé en années",
|
|
33
37
|
"familyNameLabelText": "Nom de famille",
|
|
@@ -50,7 +54,6 @@
|
|
|
50
54
|
"loadingResults": "Résultats de chargement",
|
|
51
55
|
"male": "Homme",
|
|
52
56
|
"middleNameLabelText": "Deuxième nom",
|
|
53
|
-
"months": "Mois",
|
|
54
57
|
"negativeMonths": "Mois négatifs",
|
|
55
58
|
"negativeYears": "Années négatives",
|
|
56
59
|
"no": "Non",
|
|
@@ -60,8 +63,6 @@
|
|
|
60
63
|
"other": "Autre",
|
|
61
64
|
"patient": "Patient",
|
|
62
65
|
"patientNameKnown": "Le nom du patient est connu?",
|
|
63
|
-
"phoneEmailLabelText": "Téléphone, Email, etc.",
|
|
64
|
-
"phoneNumberInputLabelText": "Téléphone",
|
|
65
66
|
"postalCode": "Code postal",
|
|
66
67
|
"registerPatient": "Enregistrer un patient",
|
|
67
68
|
"registrationSuccessToastDescription": "Le patient peut maintenant être trouvé en faisant une recherche par son nom ou son numéro d'identification",
|
|
@@ -69,21 +70,22 @@
|
|
|
69
70
|
"relationship": "Relation",
|
|
70
71
|
"relationshipPlaceholder": "Relation",
|
|
71
72
|
"relationshipRemovedText": "Relation supprimée",
|
|
73
|
+
"relationshipsSection": "Relationships",
|
|
72
74
|
"relationshipToPatient": "Relation avec le patient",
|
|
73
75
|
"relativeFullNameLabelText": "Nom et prénom",
|
|
74
76
|
"relativeNamePlaceholder": "Prénom Nom de famile",
|
|
75
77
|
"resetIdentifierTooltip": "Réinitialiser",
|
|
76
78
|
"restoreRelationshipActionButton": "Annuler",
|
|
77
79
|
"searchAddress": "Chercher l'adresse",
|
|
80
|
+
"selectAnOption": "Select an option",
|
|
78
81
|
"sexFieldLabelText": "Sexe",
|
|
79
82
|
"stateProvince": "Etat",
|
|
80
83
|
"stroke": "Accident",
|
|
81
|
-
"
|
|
84
|
+
"unableToFetch": "Unable to fetch person attribute type - {personattributetype}",
|
|
82
85
|
"unknown": "Inconnu",
|
|
83
86
|
"updatePatient": "Mettre à jour le patient",
|
|
84
87
|
"updationSuccessToastDescription": "Les informations du patient ont été mises à jour avec succès",
|
|
85
88
|
"updationSuccessToastTitle": "Les informations du patients ont été mises à jour",
|
|
86
|
-
"years": "Années",
|
|
87
89
|
"yearsEstimateRequired": "Estimation du nombre d'années requise",
|
|
88
90
|
"yes": "Oui"
|
|
89
91
|
}
|
package/translations/he.json
CHANGED
|
@@ -12,14 +12,17 @@
|
|
|
12
12
|
"causeOfDeathInputLabel": "סיבת המוות",
|
|
13
13
|
"cityVillage": "עיר",
|
|
14
14
|
"configure": "הגדר",
|
|
15
|
+
"contactSection": "Contact Details",
|
|
15
16
|
"country": "מדינה",
|
|
16
17
|
"countyDistrict": "מחוז",
|
|
17
18
|
"createNew": "צור חדש",
|
|
18
19
|
"dateOfBirthLabelText": "תאריך לידה",
|
|
19
20
|
"deathDateInputLabel": "תאריך המוות",
|
|
20
21
|
"deathdayNotInTheFuture": "תאריך המוות לא יכול להיות בעתיד",
|
|
22
|
+
"deathSection": "Death Info",
|
|
21
23
|
"deleteIdentifierTooltip": "מחק",
|
|
22
24
|
"deleteRelationshipTooltipText": "מחק",
|
|
25
|
+
"demographicsSection": "Basic Info",
|
|
23
26
|
"discard": "התעלם",
|
|
24
27
|
"discardModalBody": "השינויים שביצעת בפרטי המטופל הלקוח לא נשמרו. האם להתעלם מהשינויים?",
|
|
25
28
|
"discardModalHeader": "אשר התעלמות מהשינויים",
|
|
@@ -27,7 +30,8 @@
|
|
|
27
30
|
"edit": "עריכה",
|
|
28
31
|
"editIdentifierTooltip": "ערוך",
|
|
29
32
|
"editPatientDetails": "ערוך פרטי מטופל",
|
|
30
|
-
"
|
|
33
|
+
"error": "Error",
|
|
34
|
+
"errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
|
|
31
35
|
"estimatedAgeInMonthsLabelText": "גיל משוער בחודשים",
|
|
32
36
|
"estimatedAgeInYearsLabelText": "גיל משוער בשנים",
|
|
33
37
|
"familyNameLabelText": "שם משפחה",
|
|
@@ -50,7 +54,6 @@
|
|
|
50
54
|
"loadingResults": "טוען תוצאות",
|
|
51
55
|
"male": "זכר",
|
|
52
56
|
"middleNameLabelText": "שם תוכני",
|
|
53
|
-
"months": "חודשים",
|
|
54
57
|
"negativeMonths": "חודשים שליליים",
|
|
55
58
|
"negativeYears": "שנים שליליות",
|
|
56
59
|
"no": "לא",
|
|
@@ -60,8 +63,6 @@
|
|
|
60
63
|
"other": "אחר",
|
|
61
64
|
"patient": "מטופל",
|
|
62
65
|
"patientNameKnown": "שם המטופל ידוע?",
|
|
63
|
-
"phoneEmailLabelText": "טלפון, אימייל, וכו'",
|
|
64
|
-
"phoneNumberInputLabelText": "מספר טלפון",
|
|
65
66
|
"postalCode": "מיקוד",
|
|
66
67
|
"registerPatient": "רישום מטופל",
|
|
67
68
|
"registrationSuccessToastDescription": "המטופל נרשם בהצלחה וניתן למצוא אותו באמצעות חיפוש לפי שם או מספר תעודת זהות",
|
|
@@ -69,21 +70,22 @@
|
|
|
69
70
|
"relationship": "קשר",
|
|
70
71
|
"relationshipPlaceholder": "קשר",
|
|
71
72
|
"relationshipRemovedText": "קשר הוסר",
|
|
73
|
+
"relationshipsSection": "Relationships",
|
|
72
74
|
"relationshipToPatient": "קשר למטופל",
|
|
73
75
|
"relativeFullNameLabelText": "שם מלא",
|
|
74
76
|
"relativeNamePlaceholder": "שם פרטי שם משפחה",
|
|
75
77
|
"resetIdentifierTooltip": "איפוס",
|
|
76
78
|
"restoreRelationshipActionButton": "ביטול",
|
|
77
79
|
"searchAddress": "חיפוש כתובת",
|
|
80
|
+
"selectAnOption": "Select an option",
|
|
78
81
|
"sexFieldLabelText": "מין",
|
|
79
82
|
"stateProvince": "מחוז",
|
|
80
83
|
"stroke": "שבץ",
|
|
81
|
-
"
|
|
84
|
+
"unableToFetch": "Unable to fetch person attribute type - {personattributetype}",
|
|
82
85
|
"unknown": "לא ידוע",
|
|
83
86
|
"updatePatient": "עדכון פרטי מטופל",
|
|
84
87
|
"updationSuccessToastDescription": "פרטי המטופל עודכנו בהצלחה",
|
|
85
88
|
"updationSuccessToastTitle": "פרטי המטופל עודכנו",
|
|
86
|
-
"years": "שנים",
|
|
87
89
|
"yearsEstimateRequired": "נדרש חיזוי שנים",
|
|
88
90
|
"yes": "כן"
|
|
89
91
|
}
|
package/translations/km.json
CHANGED
|
@@ -12,14 +12,17 @@
|
|
|
12
12
|
"causeOfDeathInputLabel": "មូលហេតុនៃការស្លាប់",
|
|
13
13
|
"cityVillage": "ទីក្រុង",
|
|
14
14
|
"configure": "កំណត់រចនាសម្ព័ន្ធ",
|
|
15
|
+
"contactSection": "Contact Details",
|
|
15
16
|
"country": "ប្រទេស",
|
|
16
17
|
"countyDistrict": "ស្រុក/ខ័ណ្ឌ",
|
|
17
18
|
"createNew": "បង្កើតថ្មី",
|
|
18
19
|
"dateOfBirthLabelText": "ថ្ងៃខែឆ្នាំកំណើត",
|
|
19
20
|
"deathDateInputLabel": "កាលបរិច្ឆេទនៃការស្លាប់",
|
|
20
21
|
"deathdayNotInTheFuture": "ថ្ងៃស្លាប់មិនអាចមាននាពេលអនាគតទេ។",
|
|
22
|
+
"deathSection": "Death Info",
|
|
21
23
|
"deleteIdentifierTooltip": "លុប",
|
|
22
24
|
"deleteRelationshipTooltipText": "លុប",
|
|
25
|
+
"demographicsSection": "Basic Info",
|
|
23
26
|
"discard": "បោះបង់",
|
|
24
27
|
"discardModalBody": "ការផ្លាស់ប្តូរដែលអ្នកបានធ្វើចំពោះព័ត៌មានលម្អិតរបស់អ្នកជំងឺនេះមិនត្រូវបានរក្សាទុកទេ។ បោះបង់ការផ្លាស់ប្តូរ?",
|
|
25
28
|
"discardModalHeader": "បញ្ជាក់ការផ្លាស់ប្តូរការបោះបង់",
|
|
@@ -27,7 +30,8 @@
|
|
|
27
30
|
"edit": "កែសម្រួល",
|
|
28
31
|
"editIdentifierTooltip": "កែសម្រួល",
|
|
29
32
|
"editPatientDetails": "កែសម្រួលព័ត៌មានលម្អិតអ្នកជំងឺ",
|
|
30
|
-
"
|
|
33
|
+
"error": "Error",
|
|
34
|
+
"errorFetchingOrderedFields": "Error occured fetching ordered fields for address hierarchy",
|
|
31
35
|
"estimatedAgeInMonthsLabelText": "អាយុប៉ាន់ស្មានគិតជាខែ",
|
|
32
36
|
"estimatedAgeInYearsLabelText": "អាយុប៉ាន់ស្មានគិតជាឆ្នាំ",
|
|
33
37
|
"familyNameLabelText": "នាមត្រកូល",
|
|
@@ -50,7 +54,6 @@
|
|
|
50
54
|
"loadingResults": "កំពុងផ្ទុកលទ្ធផល",
|
|
51
55
|
"male": "ប្រុស",
|
|
52
56
|
"middleNameLabelText": "លេខជាឈ្មោះដែលសង្ស័យ",
|
|
53
|
-
"months": "ខែ",
|
|
54
57
|
"negativeMonths": "ខែអវិជ្ជមាន",
|
|
55
58
|
"negativeYears": "ឆ្នាំអវិជ្ជមាន",
|
|
56
59
|
"no": "ទេ",
|
|
@@ -60,8 +63,6 @@
|
|
|
60
63
|
"other": "ផ្សេងៗ",
|
|
61
64
|
"patient": "អ្នកជំងឺ",
|
|
62
65
|
"patientNameKnown": "ស្គាល់ឈ្មោះអ្នកជំងឺឬទេ?",
|
|
63
|
-
"phoneEmailLabelText": "ទូរស័ព្ទ អ៊ីមែល។ល។",
|
|
64
|
-
"phoneNumberInputLabelText": "លេខទូរស័ព្ទ",
|
|
65
66
|
"postalCode": "លេខកូដប្រៃសណីយ៍",
|
|
66
67
|
"registerPatient": "ចុះឈ្មោះអ្នកជំងឺ",
|
|
67
68
|
"registrationSuccessToastDescription": "អ្នកជំងឺអាចត្រូវបានស្រាវជ្រាវរកពួកគេតាមរយ ប្រើប្រាស់ឈ្មោះឬអត្តលេខរបស់ពួកគេ",
|
|
@@ -69,21 +70,22 @@
|
|
|
69
70
|
"relationship": "ទំនាក់ទំនង",
|
|
70
71
|
"relationshipPlaceholder": "ទំនាក់ទំនង",
|
|
71
72
|
"relationshipRemovedText": "ការទំនាក់ទំនងត្រូវបានដកចេញ",
|
|
73
|
+
"relationshipsSection": "Relationships",
|
|
72
74
|
"relationshipToPatient": "ការទាក់ទងទៅនឹងអ្នកជំងឺ",
|
|
73
75
|
"relativeFullNameLabelText": "ឈ្មោះពេញ",
|
|
74
76
|
"relativeNamePlaceholder": "នាមត្រកូលនាមខ្លួន",
|
|
75
77
|
"resetIdentifierTooltip": "រៀបចំឡើងវិញ",
|
|
76
78
|
"restoreRelationshipActionButton": "វិលត្រឡប់មកដើមវិញ",
|
|
77
79
|
"searchAddress": "ស្វែងរកអាសយដ្ឋាន",
|
|
80
|
+
"selectAnOption": "Select an option",
|
|
78
81
|
"sexFieldLabelText": "ភេទ",
|
|
79
82
|
"stateProvince": "រដ្ឋ",
|
|
80
83
|
"stroke": "ជំងឺស្ទះសរសៃឈាមខួរក្បាល",
|
|
81
|
-
"
|
|
84
|
+
"unableToFetch": "Unable to fetch person attribute type - {personattributetype}",
|
|
82
85
|
"unknown": "មិនដឹង",
|
|
83
86
|
"updatePatient": "ធ្វើបច្ចុប្បន្នភាពអ្នកជំងឺ",
|
|
84
87
|
"updationSuccessToastDescription": "ព័ត៌មានរបស់អ្នកជំងឺត្រូវបានធ្វើបច្ចុប្បន្នភាពដោយជោគជ័យ",
|
|
85
88
|
"updationSuccessToastTitle": "ព័ត៌មានលម្អិតអំពីអ្នកជំងឺត្រូវបានធ្វើបច្ចុប្បន្នភាព",
|
|
86
|
-
"years": "ឆ្នាំ",
|
|
87
89
|
"yearsEstimateRequired": "តម្រូវឱ្យមានការប៉ាន់ស្មានឆ្នាំ",
|
|
88
90
|
"yes": "បាទ/ចាស"
|
|
89
91
|
}
|