diff --git a/app/doctor/_components/analysis-view.tsx b/app/doctor/_components/analysis-view.tsx index 2d43d7f..762c4bd 100644 --- a/app/doctor/_components/analysis-view.tsx +++ b/app/doctor/_components/analysis-view.tsx @@ -19,7 +19,7 @@ import { } from '@kit/doctor/schema/doctor-analysis-detail-view.schema'; import { DoctorAnalysisFeedbackForm, - doctorAnalysisFeedbackSchema, + doctorAnalysisFeedbackFormSchema, } from '@kit/doctor/schema/doctor-analysis.schema'; import ConfirmationModal from '@kit/shared/components/confirmation-modal'; import { getFullName } from '@kit/shared/utils'; @@ -36,9 +36,11 @@ import { toast } from '@kit/ui/sonner'; import { Textarea } from '@kit/ui/textarea'; import { Trans } from '@kit/ui/trans'; -import Analysis from '~/home/(user)/(dashboard)/analysis-results/_components/analysis'; import { bmiFromMetric } from '~/lib/utils'; +import DoctorAnalysisWrapper from './doctor-analysis-wrapper'; +import DoctorJobSelect from './doctor-job-select'; + export default function AnalysisView({ patient, order, @@ -54,16 +56,20 @@ export default function AnalysisView({ const { data: user } = useUser(); - const isInProgress = + const isInProgress = !!( !!feedback?.status && feedback?.doctor_user_id && - feedback?.status !== 'COMPLETED'; + feedback?.status !== 'COMPLETED' + ); + const isCurrentDoctorJob = + !!feedback?.doctor_user_id && feedback?.doctor_user_id === user?.id; const isReadOnly = !isInProgress || (!!feedback?.doctor_user_id && feedback?.doctor_user_id !== user?.id); const form = useForm({ - resolver: zodResolver(doctorAnalysisFeedbackSchema), + resolver: zodResolver(doctorAnalysisFeedbackFormSchema), + reValidateMode: 'onChange', defaultValues: { feedbackValue: feedback?.value ?? '', userId: patient.userId, @@ -103,12 +109,22 @@ export default function AnalysisView({ } }; - const handleDraftSubmit = () => { + const handleDraftSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + form.formState.errors.feedbackValue = undefined; const formData = form.getValues(); onSubmit(formData, 'DRAFT'); }; - const handleCompleteSubmit = () => { + const handleCompleteSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + const isValid = await form.trigger(); + if (!isValid) { + return; + } + setIsConfirmOpen(true); }; @@ -119,16 +135,31 @@ export default function AnalysisView({ return ( <> -
{feedback?.value ?? '-'}
- {!isReadOnly && (