Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: KHP3-7296-Make relationship person middle name optional and remove notes from relationship payload #547

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import { zodResolver } from '@hookform/resolvers/zod';
import { DefaultWorkspaceProps, useConfig, useSession } from '@openmrs/esm-framework';
import React, { useEffect, useMemo } from 'react';
import { Controller, FormProvider, useForm } from 'react-hook-form';
import { Controller, FormProvider, SubmitHandler, useForm } from 'react-hook-form';
import { useTranslation } from 'react-i18next';
import { z } from 'zod';
import { ConfigObject } from '../config-schema';
Expand Down Expand Up @@ -119,7 +119,7 @@
if (!showIPVRelatedFields) {
form.setValue('ipvOutCome', undefined);
}
}, [observablePhysicalAssault, observableThreatened, observableSexualAssault, observableRelationship]);

Check warning on line 122 in packages/esm-patient-clinical-view-app/src/contact-list/contact-list.workspace.tsx

View workflow job for this annotation

GitHub Actions / build

React Hook useEffect has missing dependencies: 'form' and 'showIPVRelatedFields'. Either include them or remove the dependency array

return (
<FormProvider {...form}>
Expand All @@ -131,18 +131,21 @@
<Controller
control={form.control}
name="startDate"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<DatePicker
className={styles.datePickerInput}
dateFormat="d/m/Y"
id="startDate"
datePickerType="single"
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
ref={undefined}
invalid={error?.message}
invalidText={error?.message}>
<DatePickerInput
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
id={`startdate-input`}
name="startdate-input"
invalid={error?.message}
invalidText={error?.message}
placeholder="mm/dd/yyyy"
labelText={t('startDate', 'Start Date')}
size="xl"
Expand All @@ -155,18 +158,18 @@
<Controller
control={form.control}
name="endDate"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<DatePicker
className={styles.datePickerInput}
dateFormat="d/m/Y"
id="endDate"
datePickerType="single"
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
invalid={error?.message}
invalidText={error?.message}>
<DatePickerInput
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
placeholder="mm/dd/yyyy"
labelText={t('endDate', 'End Date')}
size="xl"
Expand All @@ -179,11 +182,11 @@
<Controller
control={form.control}
name="relationshipType"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<Dropdown
ref={field.ref}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
id="relationshipToPatient"
titleText={t('relationToPatient', 'Relation to patient')}
onChange={(e) => {
Expand All @@ -203,11 +206,11 @@
<Controller
control={form.control}
name="livingWithClient"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<Dropdown
ref={field.ref}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
id="livingWithClient"
titleText={t('livingWithClient', 'Living with client')}
onChange={(e) => {
Expand All @@ -228,16 +231,16 @@
<Controller
control={form.control}
name="physicalAssault"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<RadioButtonGroup
id="physicalAssault"
legendText={t(
'physicalAssault',
'1. Has he/she ever hit, kicked, slapped, or otherwise physically hurt you?',
)}
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
className={styles.billingItem}>
<RadioButton labelText={t('yes', 'Yes')} value={BOOLEAN_YES} id="physicalAssault_yes" />
<RadioButton labelText={t('no', 'No')} value={BOOLEAN_NO} id="physicalAssault_no" />
Expand All @@ -249,13 +252,13 @@
<Controller
control={form.control}
name="threatened"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<RadioButtonGroup
id="threatened"
legendText={t('threatened', '2. Has he/she ever threatened to hurt you?')}
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
className={styles.billingItem}>
<RadioButton labelText={t('yes', 'Yes')} value={BOOLEAN_YES} id="threatened_yes" />
<RadioButton labelText={t('no', 'No')} value={BOOLEAN_NO} id="threatened_no" />
Expand All @@ -267,16 +270,16 @@
<Controller
control={form.control}
name="sexualAssault"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<RadioButtonGroup
id="sexualAssault"
legendText={t(
'sexualAssault',
'3.Has he/she ever forced you to do something sexually that made you feel uncomfortable?',
)}
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
className={styles.billingItem}>
<RadioButton labelText={t('yes', 'Yes')} value={BOOLEAN_YES} id="sexualAssault_yes" />
<RadioButton labelText={t('no', 'No')} value={BOOLEAN_NO} id="sexualAssault_no" />
Expand All @@ -289,11 +292,11 @@
<Controller
control={form.control}
name="ipvOutCome"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<Dropdown
ref={field.ref}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
id="ipvOutCome"
titleText={t('ipvOutCome', 'IPV Outcome')}
onChange={(e) => {
Expand All @@ -316,11 +319,11 @@
<Controller
control={form.control}
name="baselineStatus"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<Dropdown
ref={field.ref}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
id="baselineStatus"
titleText={t('baselineStatus', 'HIV Status')}
onChange={(e) => {
Expand All @@ -338,11 +341,11 @@
<Controller
control={form.control}
name="preferedPNSAproach"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<Dropdown
ref={field.ref}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
id="preferedPNSAproach"
titleText={t('preferedPNSAproach', 'Prefered PNS Aproach')}
onChange={(e) => {
Expand All @@ -364,11 +367,7 @@
<Button className={styles.button} kind="secondary" onClick={closeWorkspace}>
{t('discard', 'Discard')}
</Button>
<Button
className={styles.button}
kind="primary"
type="submit"
disabled={form.formState.isSubmitting || !form.formState.isValid}>
<Button className={styles.button} kind="primary" type="submit" disabled={form.formState.isSubmitting}>
{t('submit', 'Submit')}
</Button>
</ButtonSet>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,11 @@ const FamilyRelationshipForm: React.FC<RelationshipFormProps> = ({ closeWorkspac
resolver: zodResolver(schema),
});

const {
control,
handleSubmit,
formState: { isValid },
} = form;
const { control, handleSubmit } = form;

const onSubmit: SubmitHandler<FormData> = async (data) => {
try {
await saveRelationship(data, config, session, []);
await saveRelationship({ ...data, ...({ notes: undefined } as any) }, config, session, []); /// Remove notes from payload since endpoint doesnt espect it avoid 400 error
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a typo here

closeWorkspace();
} catch (error) {}
};
Expand Down Expand Up @@ -100,18 +96,19 @@ const FamilyRelationshipForm: React.FC<RelationshipFormProps> = ({ closeWorkspac
<Controller
control={form.control}
name="startDate"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<DatePicker
className={styles.datePickerInput}
dateFormat="d/m/Y"
id="startDate"
datePickerType="single"
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
ref={undefined}
invalid={error?.message}
invalidText={error?.message}>
<DatePickerInput
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
placeholder="mm/dd/yyyy"
labelText={t('startDate', 'Start Date')}
size="xl"
Expand All @@ -124,18 +121,19 @@ const FamilyRelationshipForm: React.FC<RelationshipFormProps> = ({ closeWorkspac
<Controller
control={form.control}
name="endDate"
render={({ field }) => (
render={({ field, fieldState: { error } }) => (
<DatePicker
className={styles.datePickerInput}
dateFormat="d/m/Y"
id="endDate"
datePickerType="single"
{...field}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
ref={undefined}
invalid={error?.message}
invalidText={error?.message}>
<DatePickerInput
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}
invalid={error?.message}
invalidText={error?.message}
placeholder="mm/dd/yyyy"
labelText={t('endDate', 'End Date')}
size="xl"
Expand Down Expand Up @@ -164,11 +162,7 @@ const FamilyRelationshipForm: React.FC<RelationshipFormProps> = ({ closeWorkspac
<Button className={styles.button} kind="secondary" onClick={closeWorkspace}>
{t('discard', 'Discard')}
</Button>
<Button
className={styles.button}
kind="primary"
type="submit"
disabled={!isValid || form.formState.isLoading}>
<Button className={styles.button} kind="primary" type="submit" disabled={form.formState.isSubmitting}>
{t('save', 'Save')}
</Button>
</ButtonSet>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,11 @@ export const OtherRelationshipsForm: React.FC<OtherRelationshipsFormProps> = ({
resolver: zodResolver(schema),
});

const {
control,
handleSubmit,
formState: { isValid },
} = form;
const { control, handleSubmit } = form;

const onSubmit: SubmitHandler<FormData> = async (data) => {
try {
await saveRelationship(data, config, session, []);
await saveRelationship({ ...data, ...({ notes: undefined } as any) }, config, session, []);
closeWorkspace();
} catch (error) {}
};
Expand All @@ -87,6 +83,7 @@ export const OtherRelationshipsForm: React.FC<OtherRelationshipsFormProps> = ({
id="startDate"
datePickerType="single"
{...field}
ref={undefined}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
<DatePickerInput
Expand All @@ -111,6 +108,7 @@ export const OtherRelationshipsForm: React.FC<OtherRelationshipsFormProps> = ({
id="endDate"
datePickerType="single"
{...field}
ref={undefined}
invalid={form.formState.errors[field.name]?.message}
invalidText={form.formState.errors[field.name]?.message}>
<DatePickerInput
Expand Down Expand Up @@ -162,11 +160,7 @@ export const OtherRelationshipsForm: React.FC<OtherRelationshipsFormProps> = ({
<Button className={styles.button} kind="secondary" onClick={closeWorkspace}>
{t('discard', 'Discard')}
</Button>
<Button
className={styles.button}
kind="primary"
type="submit"
disabled={!isValid || form.formState.isSubmitting}>
<Button className={styles.button} kind="primary" type="submit" disabled={form.formState.isSubmitting}>
{t('save', 'Save')}
</Button>
</ButtonSet>
Expand Down
Loading
Loading