add doctor feedback

This commit is contained in:
Danel Kungla
2025-10-28 16:09:06 +02:00
parent b5b01648fc
commit 8bc6089a7f
28 changed files with 820 additions and 95 deletions

View File

@@ -1,5 +1,7 @@
'use client';
import { useMemo, useState } from 'react';
import { useQueryClient } from '@tanstack/react-query';
import { capitalize } from 'lodash';
@@ -23,20 +25,40 @@ import { bmiFromMetric } from '~/lib/utils';
import AnalysisFeedback from './analysis-feedback';
import DoctorAnalysisWrapper from './doctor-analysis-wrapper';
import DoctorJobSelect from './doctor-job-select';
import DoctorRecommendedAnalyses from './doctor-recommended-analyses';
export default function AnalysisView({
patient,
order,
analyses,
feedback,
aiDoctorFeedback,
recommendations,
availableAnalyses,
timestamp,
}: {
patient: Patient;
order: Order;
analyses: AnalysisResponse[];
feedback?: DoctorFeedback;
aiDoctorFeedback?: string;
recommendations?: string[];
availableAnalyses?: string[];
timestamp?: string;
}) {
const { data: user } = useUser();
const queryClient = useQueryClient();
const [recommendedAnalyses, setRecommendedAnalyses] = useState<string[]>(
recommendations ?? [],
);
const isRecommendationsEdited = useMemo(() => {
if (recommendedAnalyses.length !== recommendations?.length) return true;
const sa = new Set(recommendedAnalyses),
sb = new Set(recommendations);
if (sa.size !== sb.size) return true;
for (const v of sa) if (!sb.has(v)) return true;
return false;
}, [recommendations, recommendedAnalyses]);
const languageNames = useCurrentLocaleLanguageNames();
@@ -154,7 +176,28 @@ export default function AnalysisView({
})}
</div>
{order.isPackage && (
<AnalysisFeedback order={order} patient={patient} feedback={feedback} />
<>
<h3>
<Trans i18nKey="doctor:feedback" />
</h3>
<p>{feedback?.value ?? '-'}</p>
<div className="flex flex-col gap-4 lg:flex-row">
<AnalysisFeedback
order={order}
patient={patient}
feedback={feedback}
aiDoctorFeedback={aiDoctorFeedback}
timestamp={timestamp}
recommendations={recommendedAnalyses}
isRecommendationsEdited={isRecommendationsEdited}
/>
<DoctorRecommendedAnalyses
recommendedAnalyses={recommendedAnalyses}
availableAnalyses={availableAnalyses}
setRecommendedAnalyses={setRecommendedAnalyses}
/>
</div>
</>
)}
</>
);