@openmrs/esm-patient-immunizations-app 11.3.1-patch.9310 → 11.3.1-patch.9508
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/.turbo/turbo-build.log +20 -23
- package/README.md +170 -1
- package/dist/3606.js +1 -1
- package/dist/3606.js.map +1 -1
- package/dist/3677.js +1 -1
- package/dist/3677.js.map +1 -1
- package/dist/4055.js +1 -1
- package/dist/439.js +1 -0
- package/dist/5134.js +2 -0
- package/dist/5134.js.map +1 -0
- package/dist/5670.js +1 -1
- package/dist/5670.js.map +1 -1
- package/dist/5858.js +1 -0
- package/dist/5858.js.map +1 -0
- package/dist/6589.js +1 -0
- package/dist/795.js +1 -1
- package/dist/795.js.map +1 -1
- package/dist/8371.js +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-patient-immunizations-app.js +1 -1
- package/dist/openmrs-esm-patient-immunizations-app.js.buildmanifest.json +122 -56
- package/dist/routes.json +1 -1
- package/package.json +2 -2
- package/src/immunizations/immunization-history-dashboard.component.tsx +12 -10
- package/src/immunizations/immunizations-detailed-summary.component.tsx +2 -2
- package/src/immunizations/immunizations-detailed-summary.test.tsx +8 -24
- package/src/immunizations/immunizations-form.test.tsx +8 -14
- package/src/immunizations/immunizations-form.workspace.tsx +162 -157
- package/src/immunizations/immunizations-overview.component.tsx +2 -2
- package/src/routes.json +6 -12
- package/translations/cs.json +47 -0
- package/translations/fr.json +4 -4
- package/translations/sq.json +47 -0
- package/translations/zh_TW.json +47 -0
- package/dist/1268.js +0 -2
- package/dist/1268.js.map +0 -1
- package/dist/7955.js +0 -1
- package/dist/7955.js.map +0 -1
- /package/dist/{1268.js.LICENSE.txt → 5134.js.LICENSE.txt} +0 -0
|
@@ -14,9 +14,8 @@ import {
|
|
|
14
14
|
useConfig,
|
|
15
15
|
useLayoutType,
|
|
16
16
|
useSession,
|
|
17
|
-
Workspace2,
|
|
18
17
|
} from '@openmrs/esm-framework';
|
|
19
|
-
import { type
|
|
18
|
+
import { type DefaultPatientWorkspaceProps } from '@openmrs/esm-patient-common-lib';
|
|
20
19
|
import { DoseInput } from './components/dose-input.component';
|
|
21
20
|
import { immunizationFormSub } from './utils';
|
|
22
21
|
import { mapToFHIRImmunizationResource } from './immunization-mapper';
|
|
@@ -27,9 +26,13 @@ import { useImmunizations } from '../hooks/useImmunizations';
|
|
|
27
26
|
import { useImmunizationsConceptSet } from '../hooks/useImmunizationsConceptSet';
|
|
28
27
|
import styles from './immunizations-form.scss';
|
|
29
28
|
|
|
30
|
-
const ImmunizationsForm: React.FC<
|
|
29
|
+
const ImmunizationsForm: React.FC<DefaultPatientWorkspaceProps> = ({
|
|
30
|
+
patient,
|
|
31
|
+
patientUuid,
|
|
31
32
|
closeWorkspace,
|
|
32
|
-
|
|
33
|
+
closeWorkspaceWithSavedChanges,
|
|
34
|
+
promptBeforeClosing,
|
|
35
|
+
visitContext,
|
|
33
36
|
}) => {
|
|
34
37
|
const config = useConfig<ImmunizationConfigObject>();
|
|
35
38
|
const currentUser = useSession();
|
|
@@ -42,6 +45,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
42
45
|
immunizationObsUuid: string;
|
|
43
46
|
visitUuid?: string;
|
|
44
47
|
}>();
|
|
48
|
+
const now = useMemo(() => new Date(), []);
|
|
45
49
|
|
|
46
50
|
const immunizationFormSchema = useMemo(() => {
|
|
47
51
|
return z.object({
|
|
@@ -55,7 +59,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
55
59
|
(date) => {
|
|
56
60
|
// Normalize both dates to start of day in local timezone
|
|
57
61
|
const inputDate = dayjs(date).startOf('day');
|
|
58
|
-
const today = dayjs().startOf('day');
|
|
62
|
+
const today = dayjs(now).startOf('day');
|
|
59
63
|
return inputDate.isSame(today) || inputDate.isBefore(today);
|
|
60
64
|
},
|
|
61
65
|
{
|
|
@@ -70,7 +74,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
70
74
|
lotNumber: z.string().nullable().optional(),
|
|
71
75
|
manufacturer: z.string().nullable().optional(),
|
|
72
76
|
});
|
|
73
|
-
}, [patient.birthDate, t]);
|
|
77
|
+
}, [patient.birthDate, t, now]);
|
|
74
78
|
|
|
75
79
|
type ImmunizationFormInputData = z.infer<typeof immunizationFormSchema>;
|
|
76
80
|
const formProps = useForm<ImmunizationFormInputData>({
|
|
@@ -78,7 +82,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
78
82
|
resolver: zodResolver(immunizationFormSchema),
|
|
79
83
|
defaultValues: {
|
|
80
84
|
vaccineUuid: '',
|
|
81
|
-
vaccinationDate: dayjs().startOf('day').toDate(),
|
|
85
|
+
vaccinationDate: dayjs(now).startOf('day').toDate(),
|
|
82
86
|
doseNumber: 1,
|
|
83
87
|
nextDoseDate: null,
|
|
84
88
|
note: '',
|
|
@@ -96,12 +100,17 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
96
100
|
watch,
|
|
97
101
|
} = formProps;
|
|
98
102
|
const vaccinationDate = watch('vaccinationDate');
|
|
103
|
+
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
promptBeforeClosing(() => isDirty);
|
|
106
|
+
}, [isDirty, promptBeforeClosing]);
|
|
107
|
+
|
|
99
108
|
const vaccineUuid = watch('vaccineUuid');
|
|
100
109
|
|
|
101
110
|
useEffect(() => {
|
|
102
111
|
const sub = immunizationFormSub.subscribe((props) => {
|
|
103
112
|
if (props) {
|
|
104
|
-
const vaccinationDateOrNow = props.vaccinationDate ? parseDate(props.vaccinationDate) :
|
|
113
|
+
const vaccinationDateOrNow = props.vaccinationDate ? parseDate(props.vaccinationDate) : now;
|
|
105
114
|
reset({
|
|
106
115
|
vaccineUuid: props.vaccineUuid,
|
|
107
116
|
vaccinationDate: vaccinationDateOrNow,
|
|
@@ -120,7 +129,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
120
129
|
sub.unsubscribe();
|
|
121
130
|
immunizationFormSub.next(null);
|
|
122
131
|
};
|
|
123
|
-
}, [reset]);
|
|
132
|
+
}, [reset, now]);
|
|
124
133
|
|
|
125
134
|
const onSubmit = useCallback(
|
|
126
135
|
async (data: ImmunizationFormInputData) => {
|
|
@@ -161,7 +170,7 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
161
170
|
immunizationToEditMeta?.immunizationObsUuid,
|
|
162
171
|
abortController,
|
|
163
172
|
);
|
|
164
|
-
|
|
173
|
+
closeWorkspaceWithSavedChanges();
|
|
165
174
|
mutate();
|
|
166
175
|
showSnackbar({
|
|
167
176
|
kind: 'success',
|
|
@@ -184,161 +193,157 @@ const ImmunizationsForm: React.FC<PatientWorkspace2DefinitionProps<{}, {}>> = ({
|
|
|
184
193
|
visitContext?.uuid,
|
|
185
194
|
immunizationToEditMeta,
|
|
186
195
|
immunizationsConceptSet,
|
|
187
|
-
|
|
196
|
+
closeWorkspaceWithSavedChanges,
|
|
188
197
|
t,
|
|
189
198
|
mutate,
|
|
190
199
|
],
|
|
191
200
|
);
|
|
192
201
|
return (
|
|
193
|
-
<
|
|
194
|
-
<
|
|
195
|
-
<
|
|
196
|
-
<
|
|
197
|
-
<
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
<
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
{vaccineUuid && (
|
|
237
|
-
<ResponsiveWrapper>
|
|
238
|
-
<DoseInput vaccine={vaccineUuid} sequences={config.sequenceDefinitions} control={control} />
|
|
239
|
-
</ResponsiveWrapper>
|
|
240
|
-
)}
|
|
241
|
-
<div className={styles.vaccineBatchHeading}>
|
|
242
|
-
{t('vaccineBatchInformation', 'Vaccine Batch Information')}
|
|
243
|
-
</div>
|
|
244
|
-
<ResponsiveWrapper>
|
|
245
|
-
<Controller
|
|
246
|
-
name="manufacturer"
|
|
247
|
-
control={control}
|
|
248
|
-
render={({ field: { onChange, value } }) => (
|
|
249
|
-
<TextInput
|
|
250
|
-
id="manufacturer"
|
|
251
|
-
labelText={t('manufacturer', 'Manufacturer')}
|
|
252
|
-
onChange={(evt) => onChange(evt.target.value)}
|
|
253
|
-
type="text"
|
|
254
|
-
value={value}
|
|
255
|
-
/>
|
|
256
|
-
)}
|
|
257
|
-
/>
|
|
258
|
-
</ResponsiveWrapper>
|
|
259
|
-
<ResponsiveWrapper>
|
|
260
|
-
<Controller
|
|
261
|
-
name="lotNumber"
|
|
262
|
-
control={control}
|
|
263
|
-
render={({ field: { onChange, value } }) => (
|
|
264
|
-
<TextInput
|
|
265
|
-
id="lotNumber"
|
|
266
|
-
labelText={t('lotNumber', 'Lot Number')}
|
|
267
|
-
onChange={(evt) => onChange(evt.target.value)}
|
|
268
|
-
type="text"
|
|
269
|
-
value={value}
|
|
270
|
-
/>
|
|
271
|
-
)}
|
|
272
|
-
/>
|
|
273
|
-
</ResponsiveWrapper>
|
|
274
|
-
<ResponsiveWrapper>
|
|
275
|
-
<Controller
|
|
276
|
-
name="expirationDate"
|
|
277
|
-
control={control}
|
|
278
|
-
render={({ field, fieldState }) => (
|
|
279
|
-
<OpenmrsDatePicker
|
|
280
|
-
{...field}
|
|
281
|
-
className={styles.datePicker}
|
|
282
|
-
id="vaccinationExpiration"
|
|
283
|
-
invalid={Boolean(fieldState?.error?.message)}
|
|
284
|
-
invalidText={fieldState?.error?.message}
|
|
285
|
-
labelText={t('expirationDate', 'Expiration date')}
|
|
286
|
-
minDate={vaccinationDate}
|
|
287
|
-
/>
|
|
288
|
-
)}
|
|
289
|
-
/>
|
|
290
|
-
</ResponsiveWrapper>
|
|
291
|
-
<ResponsiveWrapper>
|
|
292
|
-
<Controller
|
|
293
|
-
name="note"
|
|
294
|
-
control={control}
|
|
295
|
-
render={({ field: { onChange, value } }) => (
|
|
296
|
-
<TextArea
|
|
297
|
-
enableCounter
|
|
298
|
-
id="note"
|
|
299
|
-
invalidText={errors?.note?.message}
|
|
300
|
-
labelText={t('note', 'Note')}
|
|
301
|
-
maxCount={255}
|
|
302
|
-
onChange={(evt) => onChange(evt.target.value)}
|
|
303
|
-
placeholder={t('immunizationNotePlaceholder', 'For example: mild redness at injection site')}
|
|
304
|
-
value={value}
|
|
305
|
-
/>
|
|
306
|
-
)}
|
|
307
|
-
/>
|
|
308
|
-
</ResponsiveWrapper>
|
|
202
|
+
<FormProvider {...formProps}>
|
|
203
|
+
<Form className={styles.form} onSubmit={handleSubmit(onSubmit)}>
|
|
204
|
+
<Stack gap={5} className={styles.container}>
|
|
205
|
+
<ResponsiveWrapper>
|
|
206
|
+
<Controller
|
|
207
|
+
name="vaccinationDate"
|
|
208
|
+
control={control}
|
|
209
|
+
render={({ field, fieldState }) => (
|
|
210
|
+
<OpenmrsDatePicker
|
|
211
|
+
{...field}
|
|
212
|
+
className={styles.datePicker}
|
|
213
|
+
id="vaccinationDate"
|
|
214
|
+
invalid={Boolean(fieldState?.error?.message)}
|
|
215
|
+
invalidText={fieldState?.error?.message}
|
|
216
|
+
labelText={t('vaccinationDate', 'Vaccination date')}
|
|
217
|
+
maxDate={now}
|
|
218
|
+
/>
|
|
219
|
+
)}
|
|
220
|
+
/>
|
|
221
|
+
</ResponsiveWrapper>
|
|
222
|
+
<ResponsiveWrapper>
|
|
223
|
+
<Controller
|
|
224
|
+
name="vaccineUuid"
|
|
225
|
+
control={control}
|
|
226
|
+
render={({ field: { onChange, value } }) => (
|
|
227
|
+
<Dropdown
|
|
228
|
+
disabled={!!immunizationToEditMeta}
|
|
229
|
+
id="immunization"
|
|
230
|
+
invalid={!!errors?.vaccineUuid}
|
|
231
|
+
invalidText={errors?.vaccineUuid?.message}
|
|
232
|
+
itemToString={(item) =>
|
|
233
|
+
immunizationsConceptSet?.answers.find((candidate) => candidate.uuid == item)?.display
|
|
234
|
+
}
|
|
235
|
+
items={immunizationsConceptSet?.answers?.map((item) => item.uuid) || []}
|
|
236
|
+
label={t('selectImmunization', 'Select immunization')}
|
|
237
|
+
onChange={(val) => onChange(val.selectedItem)}
|
|
238
|
+
selectedItem={value}
|
|
239
|
+
titleText={t('immunization', 'Immunization')}
|
|
240
|
+
/>
|
|
241
|
+
)}
|
|
242
|
+
/>
|
|
243
|
+
</ResponsiveWrapper>
|
|
244
|
+
{vaccineUuid && (
|
|
309
245
|
<ResponsiveWrapper>
|
|
310
|
-
<
|
|
311
|
-
name="nextDoseDate"
|
|
312
|
-
control={control}
|
|
313
|
-
render={({ field, fieldState }) => (
|
|
314
|
-
<OpenmrsDatePicker
|
|
315
|
-
{...field}
|
|
316
|
-
className={styles.datePicker}
|
|
317
|
-
id="nextDoseDate"
|
|
318
|
-
invalid={Boolean(fieldState?.error?.message)}
|
|
319
|
-
invalidText={fieldState?.error?.message}
|
|
320
|
-
labelText={t('nextDoseDate', 'Next dose date')}
|
|
321
|
-
minDate={vaccinationDate}
|
|
322
|
-
/>
|
|
323
|
-
)}
|
|
324
|
-
/>
|
|
246
|
+
<DoseInput vaccine={vaccineUuid} sequences={config.sequenceDefinitions} control={control} />
|
|
325
247
|
</ResponsiveWrapper>
|
|
326
|
-
|
|
327
|
-
<
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
{
|
|
333
|
-
<
|
|
334
|
-
|
|
335
|
-
|
|
248
|
+
)}
|
|
249
|
+
<div className={styles.vaccineBatchHeading}>{t('vaccineBatchInformation', 'Vaccine Batch Information')}</div>
|
|
250
|
+
<ResponsiveWrapper>
|
|
251
|
+
<Controller
|
|
252
|
+
name="manufacturer"
|
|
253
|
+
control={control}
|
|
254
|
+
render={({ field: { onChange, value } }) => (
|
|
255
|
+
<TextInput
|
|
256
|
+
id="manufacturer"
|
|
257
|
+
labelText={t('manufacturer', 'Manufacturer')}
|
|
258
|
+
onChange={(evt) => onChange(evt.target.value)}
|
|
259
|
+
type="text"
|
|
260
|
+
value={value}
|
|
261
|
+
/>
|
|
336
262
|
)}
|
|
337
|
-
|
|
338
|
-
</
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
263
|
+
/>
|
|
264
|
+
</ResponsiveWrapper>
|
|
265
|
+
<ResponsiveWrapper>
|
|
266
|
+
<Controller
|
|
267
|
+
name="lotNumber"
|
|
268
|
+
control={control}
|
|
269
|
+
render={({ field: { onChange, value } }) => (
|
|
270
|
+
<TextInput
|
|
271
|
+
id="lotNumber"
|
|
272
|
+
labelText={t('lotNumber', 'Lot Number')}
|
|
273
|
+
onChange={(evt) => onChange(evt.target.value)}
|
|
274
|
+
type="text"
|
|
275
|
+
value={value}
|
|
276
|
+
/>
|
|
277
|
+
)}
|
|
278
|
+
/>
|
|
279
|
+
</ResponsiveWrapper>
|
|
280
|
+
<ResponsiveWrapper>
|
|
281
|
+
<Controller
|
|
282
|
+
name="expirationDate"
|
|
283
|
+
control={control}
|
|
284
|
+
render={({ field, fieldState }) => (
|
|
285
|
+
<OpenmrsDatePicker
|
|
286
|
+
{...field}
|
|
287
|
+
className={styles.datePicker}
|
|
288
|
+
id="vaccinationExpiration"
|
|
289
|
+
invalid={Boolean(fieldState?.error?.message)}
|
|
290
|
+
invalidText={fieldState?.error?.message}
|
|
291
|
+
labelText={t('expirationDate', 'Expiration date')}
|
|
292
|
+
minDate={vaccinationDate}
|
|
293
|
+
/>
|
|
294
|
+
)}
|
|
295
|
+
/>
|
|
296
|
+
</ResponsiveWrapper>
|
|
297
|
+
<ResponsiveWrapper>
|
|
298
|
+
<Controller
|
|
299
|
+
name="note"
|
|
300
|
+
control={control}
|
|
301
|
+
render={({ field: { onChange, value } }) => (
|
|
302
|
+
<TextArea
|
|
303
|
+
enableCounter
|
|
304
|
+
id="note"
|
|
305
|
+
invalidText={errors?.note?.message}
|
|
306
|
+
labelText={t('note', 'Note')}
|
|
307
|
+
maxCount={255}
|
|
308
|
+
onChange={(evt) => onChange(evt.target.value)}
|
|
309
|
+
placeholder={t('immunizationNotePlaceholder', 'For example: mild redness at injection site')}
|
|
310
|
+
value={value}
|
|
311
|
+
/>
|
|
312
|
+
)}
|
|
313
|
+
/>
|
|
314
|
+
</ResponsiveWrapper>
|
|
315
|
+
<ResponsiveWrapper>
|
|
316
|
+
<Controller
|
|
317
|
+
name="nextDoseDate"
|
|
318
|
+
control={control}
|
|
319
|
+
render={({ field, fieldState }) => (
|
|
320
|
+
<OpenmrsDatePicker
|
|
321
|
+
{...field}
|
|
322
|
+
className={styles.datePicker}
|
|
323
|
+
id="nextDoseDate"
|
|
324
|
+
invalid={Boolean(fieldState?.error?.message)}
|
|
325
|
+
invalidText={fieldState?.error?.message}
|
|
326
|
+
labelText={t('nextDoseDate', 'Next dose date')}
|
|
327
|
+
minDate={vaccinationDate}
|
|
328
|
+
/>
|
|
329
|
+
)}
|
|
330
|
+
/>
|
|
331
|
+
</ResponsiveWrapper>
|
|
332
|
+
</Stack>
|
|
333
|
+
<ButtonSet className={isTablet ? styles.tablet : styles.desktop}>
|
|
334
|
+
<Button className={styles.button} kind="secondary" onClick={() => closeWorkspace()}>
|
|
335
|
+
{getCoreTranslation('cancel')}
|
|
336
|
+
</Button>
|
|
337
|
+
<Button className={styles.button} kind="primary" disabled={isSubmitting} type="submit">
|
|
338
|
+
{isSubmitting ? (
|
|
339
|
+
<InlineLoading className={styles.spinner} description={t('saving', 'Saving') + '...'} />
|
|
340
|
+
) : (
|
|
341
|
+
<span>{getCoreTranslation('save')}</span>
|
|
342
|
+
)}
|
|
343
|
+
</Button>
|
|
344
|
+
</ButtonSet>
|
|
345
|
+
</Form>
|
|
346
|
+
</FormProvider>
|
|
342
347
|
);
|
|
343
348
|
};
|
|
344
349
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
TableHeader,
|
|
15
15
|
TableRow,
|
|
16
16
|
} from '@carbon/react';
|
|
17
|
-
import { AddIcon, formatDate,
|
|
17
|
+
import { AddIcon, formatDate, launchWorkspace, parseDate, usePagination } from '@openmrs/esm-framework';
|
|
18
18
|
import { CardHeader, EmptyState, ErrorState, PatientChartPagination } from '@openmrs/esm-patient-common-lib';
|
|
19
19
|
import { useImmunizations } from '../hooks/useImmunizations';
|
|
20
20
|
import styles from './immunizations-overview.scss';
|
|
@@ -36,7 +36,7 @@ const ImmunizationsOverview: React.FC<ImmunizationsOverviewProps> = ({ patient,
|
|
|
36
36
|
const { data: immunizations, error, isLoading, isValidating } = useImmunizations(patientUuid);
|
|
37
37
|
const { results: paginatedImmunizations, goTo, currentPage } = usePagination(immunizations ?? [], immunizationsCount);
|
|
38
38
|
|
|
39
|
-
const launchImmunizationsForm = React.useCallback(() =>
|
|
39
|
+
const launchImmunizationsForm = React.useCallback(() => launchWorkspace('immunization-form-workspace'), []);
|
|
40
40
|
|
|
41
41
|
const tableHeaders = [
|
|
42
42
|
{
|
package/src/routes.json
CHANGED
|
@@ -37,23 +37,17 @@
|
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
"pages": [],
|
|
40
|
-
"
|
|
41
|
-
{
|
|
42
|
-
"name": "immunization-delete-confirmation-modal",
|
|
43
|
-
"component": "deleteImmunizationConfirmationModal"
|
|
44
|
-
}
|
|
45
|
-
],
|
|
46
|
-
"workspaces2": [
|
|
40
|
+
"workspaces": [
|
|
47
41
|
{
|
|
48
42
|
"name": "immunization-form-workspace",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
43
|
+
"title": "immunizationWorkspaceTitle",
|
|
44
|
+
"component": "immunizationFormWorkspace"
|
|
51
45
|
}
|
|
52
46
|
],
|
|
53
|
-
"
|
|
47
|
+
"modals": [
|
|
54
48
|
{
|
|
55
|
-
"name": "immunization-
|
|
56
|
-
"
|
|
49
|
+
"name": "immunization-delete-confirmation-modal",
|
|
50
|
+
"component": "deleteImmunizationConfirmationModal"
|
|
57
51
|
}
|
|
58
52
|
]
|
|
59
53
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "Actions",
|
|
3
|
+
"add": "Add",
|
|
4
|
+
"addImmunizations": "Add immunizations",
|
|
5
|
+
"deleteImmunization": "Delete immunization",
|
|
6
|
+
"deleting": "Deleting",
|
|
7
|
+
"doseNumber": "Dose {{number}}",
|
|
8
|
+
"doseNumberWithinSeries": "Dose number within series",
|
|
9
|
+
"doses": "Doses",
|
|
10
|
+
"due": "Due",
|
|
11
|
+
"error": "Error",
|
|
12
|
+
"errorSaving": "Error saving vaccination",
|
|
13
|
+
"expirationDate": "Expiration Date",
|
|
14
|
+
"immunization": "Immunization",
|
|
15
|
+
"immunizationDeleteConfirm": "Are you sure you want to delete dose {{doseNumber}} of {{vaccineName}}?",
|
|
16
|
+
"immunizationDeleted": "Immunization deleted",
|
|
17
|
+
"immunizationDeletedSuccess": "Immunization dose deleted successfully",
|
|
18
|
+
"immunizationDeleteError": "Failed to delete immunization: ",
|
|
19
|
+
"immunizationHistory": "Immunization history",
|
|
20
|
+
"immunizationNotePlaceholder": "For example: mild redness at injection site",
|
|
21
|
+
"immunizations": "Immunizations",
|
|
22
|
+
"Immunizations": "Immunizations",
|
|
23
|
+
"immunizations__lower": "immunizations",
|
|
24
|
+
"immunizationsHistory": "Immunizations history",
|
|
25
|
+
"immunizationWorkspaceTitle": "Immunization Form",
|
|
26
|
+
"lastDoseOnDate": "Last dose on {{date}}",
|
|
27
|
+
"lotNumber": "Lot number",
|
|
28
|
+
"manufacturer": "Manufacturer",
|
|
29
|
+
"nextDose": "Next dose",
|
|
30
|
+
"nextDoseDate": "Next dose date",
|
|
31
|
+
"notDue": "Not due",
|
|
32
|
+
"note": "Note",
|
|
33
|
+
"pleaseSelect": "Please select",
|
|
34
|
+
"recentVaccination": "Recent vaccination",
|
|
35
|
+
"saving": "Saving",
|
|
36
|
+
"seeAll": "See all",
|
|
37
|
+
"selectImmunization": "Select immunization",
|
|
38
|
+
"sequence": "Sequence",
|
|
39
|
+
"unknownVaccine": "Unknown vaccine",
|
|
40
|
+
"vaccinationDate": "Vaccination date",
|
|
41
|
+
"vaccinationDateCannotBeBeforeBirthDate": "Vaccination date cannot precede birth date",
|
|
42
|
+
"vaccinationDateCannotBeInTheFuture": "Vaccination date cannot be in the future",
|
|
43
|
+
"vaccinationSaved": "Vaccination saved successfully",
|
|
44
|
+
"vaccine": "Vaccine",
|
|
45
|
+
"vaccineBatchInformation": "Vaccine Batch Information",
|
|
46
|
+
"vaccineRequired": "Vaccine is required"
|
|
47
|
+
}
|
package/translations/fr.json
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"deleting": "Suppression en cours",
|
|
7
7
|
"doseNumber": "Dose {{number}}",
|
|
8
8
|
"doseNumberWithinSeries": "Numéro de la dose dans la série",
|
|
9
|
-
"doses": "
|
|
10
|
-
"due": "
|
|
9
|
+
"doses": "Les doses",
|
|
10
|
+
"due": "Dû",
|
|
11
11
|
"error": "Erreur",
|
|
12
12
|
"errorSaving": "Erreur d'enregistrement de la vaccination",
|
|
13
13
|
"expirationDate": "Date d'expiration",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"immunizationDeletedSuccess": "Dose de vaccination supprimée avec succès",
|
|
18
18
|
"immunizationDeleteError": "Échec de la supprimer de la vaccination :",
|
|
19
19
|
"immunizationHistory": "Historique de vaccination",
|
|
20
|
-
"immunizationNotePlaceholder": "
|
|
20
|
+
"immunizationNotePlaceholder": "Par exemple : légère rougeur au point d’injection",
|
|
21
21
|
"immunizations": "Vaccinations",
|
|
22
22
|
"Immunizations": "Vaccinations",
|
|
23
23
|
"immunizations__lower": "Vaccinations",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"manufacturer": "Fabricant",
|
|
29
29
|
"nextDose": "Prochaine dose",
|
|
30
30
|
"nextDoseDate": "Date de la prochaine dose",
|
|
31
|
-
"notDue": "
|
|
31
|
+
"notDue": "non dû",
|
|
32
32
|
"note": "Note",
|
|
33
33
|
"pleaseSelect": "Veuillez sélectionner",
|
|
34
34
|
"recentVaccination": "Vaccination récente",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "Actions",
|
|
3
|
+
"add": "Add",
|
|
4
|
+
"addImmunizations": "Add immunizations",
|
|
5
|
+
"deleteImmunization": "Delete immunization",
|
|
6
|
+
"deleting": "Deleting",
|
|
7
|
+
"doseNumber": "Dose {{number}}",
|
|
8
|
+
"doseNumberWithinSeries": "Dose number within series",
|
|
9
|
+
"doses": "Doses",
|
|
10
|
+
"due": "Due",
|
|
11
|
+
"error": "Error",
|
|
12
|
+
"errorSaving": "Error saving vaccination",
|
|
13
|
+
"expirationDate": "Expiration Date",
|
|
14
|
+
"immunization": "Immunization",
|
|
15
|
+
"immunizationDeleteConfirm": "Are you sure you want to delete dose {{doseNumber}} of {{vaccineName}}?",
|
|
16
|
+
"immunizationDeleted": "Immunization deleted",
|
|
17
|
+
"immunizationDeletedSuccess": "Immunization dose deleted successfully",
|
|
18
|
+
"immunizationDeleteError": "Failed to delete immunization: ",
|
|
19
|
+
"immunizationHistory": "Immunization history",
|
|
20
|
+
"immunizationNotePlaceholder": "For example: mild redness at injection site",
|
|
21
|
+
"immunizations": "Immunizations",
|
|
22
|
+
"Immunizations": "Immunizations",
|
|
23
|
+
"immunizations__lower": "immunizations",
|
|
24
|
+
"immunizationsHistory": "Immunizations history",
|
|
25
|
+
"immunizationWorkspaceTitle": "Immunization Form",
|
|
26
|
+
"lastDoseOnDate": "Last dose on {{date}}",
|
|
27
|
+
"lotNumber": "Lot number",
|
|
28
|
+
"manufacturer": "Manufacturer",
|
|
29
|
+
"nextDose": "Next dose",
|
|
30
|
+
"nextDoseDate": "Next dose date",
|
|
31
|
+
"notDue": "Not due",
|
|
32
|
+
"note": "Note",
|
|
33
|
+
"pleaseSelect": "Please select",
|
|
34
|
+
"recentVaccination": "Recent vaccination",
|
|
35
|
+
"saving": "Saving",
|
|
36
|
+
"seeAll": "See all",
|
|
37
|
+
"selectImmunization": "Select immunization",
|
|
38
|
+
"sequence": "Sequence",
|
|
39
|
+
"unknownVaccine": "Unknown vaccine",
|
|
40
|
+
"vaccinationDate": "Vaccination date",
|
|
41
|
+
"vaccinationDateCannotBeBeforeBirthDate": "Vaccination date cannot precede birth date",
|
|
42
|
+
"vaccinationDateCannotBeInTheFuture": "Vaccination date cannot be in the future",
|
|
43
|
+
"vaccinationSaved": "Vaccination saved successfully",
|
|
44
|
+
"vaccine": "Vaccine",
|
|
45
|
+
"vaccineBatchInformation": "Vaccine Batch Information",
|
|
46
|
+
"vaccineRequired": "Vaccine is required"
|
|
47
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actions": "Actions",
|
|
3
|
+
"add": "Add",
|
|
4
|
+
"addImmunizations": "Add immunizations",
|
|
5
|
+
"deleteImmunization": "Delete immunization",
|
|
6
|
+
"deleting": "Deleting",
|
|
7
|
+
"doseNumber": "Dose {{number}}",
|
|
8
|
+
"doseNumberWithinSeries": "Dose number within series",
|
|
9
|
+
"doses": "Doses",
|
|
10
|
+
"due": "Due",
|
|
11
|
+
"error": "Error",
|
|
12
|
+
"errorSaving": "Error saving vaccination",
|
|
13
|
+
"expirationDate": "Expiration Date",
|
|
14
|
+
"immunization": "Immunization",
|
|
15
|
+
"immunizationDeleteConfirm": "Are you sure you want to delete dose {{doseNumber}} of {{vaccineName}}?",
|
|
16
|
+
"immunizationDeleted": "Immunization deleted",
|
|
17
|
+
"immunizationDeletedSuccess": "Immunization dose deleted successfully",
|
|
18
|
+
"immunizationDeleteError": "Failed to delete immunization: ",
|
|
19
|
+
"immunizationHistory": "Immunization history",
|
|
20
|
+
"immunizationNotePlaceholder": "For example: mild redness at injection site",
|
|
21
|
+
"immunizations": "Immunizations",
|
|
22
|
+
"Immunizations": "Immunizations",
|
|
23
|
+
"immunizations__lower": "immunizations",
|
|
24
|
+
"immunizationsHistory": "Immunizations history",
|
|
25
|
+
"immunizationWorkspaceTitle": "Immunization Form",
|
|
26
|
+
"lastDoseOnDate": "Last dose on {{date}}",
|
|
27
|
+
"lotNumber": "Lot number",
|
|
28
|
+
"manufacturer": "Manufacturer",
|
|
29
|
+
"nextDose": "Next dose",
|
|
30
|
+
"nextDoseDate": "Next dose date",
|
|
31
|
+
"notDue": "Not due",
|
|
32
|
+
"note": "Note",
|
|
33
|
+
"pleaseSelect": "Please select",
|
|
34
|
+
"recentVaccination": "Recent vaccination",
|
|
35
|
+
"saving": "Saving",
|
|
36
|
+
"seeAll": "See all",
|
|
37
|
+
"selectImmunization": "Select immunization",
|
|
38
|
+
"sequence": "Sequence",
|
|
39
|
+
"unknownVaccine": "Unknown vaccine",
|
|
40
|
+
"vaccinationDate": "Vaccination date",
|
|
41
|
+
"vaccinationDateCannotBeBeforeBirthDate": "Vaccination date cannot precede birth date",
|
|
42
|
+
"vaccinationDateCannotBeInTheFuture": "Vaccination date cannot be in the future",
|
|
43
|
+
"vaccinationSaved": "Vaccination saved successfully",
|
|
44
|
+
"vaccine": "Vaccine",
|
|
45
|
+
"vaccineBatchInformation": "Vaccine Batch Information",
|
|
46
|
+
"vaccineRequired": "Vaccine is required"
|
|
47
|
+
}
|