import { Link, useParams } from 'react-router-dom';
import { useQuery } from '@tanstack/react-query';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { DiagnosisStatusBadge } from '@/components/diagnosis-status-badge';
import { RiskBadge } from '@/components/risk-badge';
import { apiClient } from '@/lib/api-client';
export function DiagnosisDetailPage() {
const { id } = useParams();
const query = useQuery({
queryKey: ['diagnosis', id],
queryFn: () => apiClient.getDiagnosis(id!),
enabled: Boolean(id),
});
if (query.isLoading) return
Memuat diagnosis...
;
if (query.error || !query.data) return Diagnosis tidak ditemukan
;
const diagnosis = query.data;
return (
Detail Diagnosis
{diagnosis.disease?.commonName ?? 'Diagnosis gagal'}
Hasil AI
{diagnosis.confidence === null ? 'Model gagal memproses gambar.' : `Confidence ${(diagnosis.confidence * 100).toFixed(1)}%`}
{diagnosis.status === 'needs_review' && (
Hasil ini masih sementara karena confidence di bawah 70% dan sedang menunggu review pakar.
)}
{diagnosis.failureReason && {diagnosis.failureReason}
}
{diagnosis.disease && (
{diagnosis.disease.label}
{diagnosis.disease.summary}
Rekomendasi
{diagnosis.disease.recommendations.map((item) => - {item}
)}
)}
Top Predictions
{diagnosis.predictions.map((prediction) => (
{prediction.rank}. {prediction.modelLabel}
{(prediction.confidence * 100).toFixed(1)}%
))}
{diagnosis.latestReview && (
Catatan Pakar
{diagnosis.latestReview.expert.name}
{diagnosis.latestReview.notes}
)}
);
}