fix(scan): resolve empty medicine data and clean up linter warning
- Add local fallback using `diseaseCatalogSeed` to populate medicine recommendations in the diagnosis preview modal when API data is missing. - Remove unused `diagnosesQuery` assignment to resolve SonarLint warning while preserving the background prefetching logic.
This commit is contained in:
@@ -16,6 +16,7 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Modal } from "@/components/ui/modal";
|
import { Modal } from "@/components/ui/modal";
|
||||||
import type { DiagnosisRecord } from "@zeavis/shared";
|
import type { DiagnosisRecord } from "@zeavis/shared";
|
||||||
|
import { diseaseCatalogSeed } from "@zeavis/shared"; // Import data seed lokal ditambahkan
|
||||||
import { apiClient } from "@/lib/api-client";
|
import { apiClient } from "@/lib/api-client";
|
||||||
import { trackScan, trackDiagnosisResult } from "@/lib/telemetry";
|
import { trackScan, trackDiagnosisResult } from "@/lib/telemetry";
|
||||||
import { DiagnosisResultView } from "../components/diagnose-result-view";
|
import { DiagnosisResultView } from "../components/diagnose-result-view";
|
||||||
@@ -76,7 +77,7 @@ export function ScanPage() {
|
|||||||
const [diagnosisPreview, setDiagnosisPreview] =
|
const [diagnosisPreview, setDiagnosisPreview] =
|
||||||
useState<DiagnosisRecord | null>(null);
|
useState<DiagnosisRecord | null>(null);
|
||||||
|
|
||||||
const diagnosesQuery = useQuery({
|
useQuery({
|
||||||
queryKey: ["diagnoses"],
|
queryKey: ["diagnoses"],
|
||||||
queryFn: () => apiClient.getDiagnoses(),
|
queryFn: () => apiClient.getDiagnoses(),
|
||||||
enabled: previewOpen,
|
enabled: previewOpen,
|
||||||
@@ -373,29 +374,46 @@ export function ScanPage() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<DiagnosisResultView
|
{/* Render DiagnosisResultView dengan Fallback Obat */}
|
||||||
imageUrl={
|
{(() => {
|
||||||
previewUrl ||
|
// Fallback logic for scientific name and medicine recommendations
|
||||||
diagnosisPreview.imageUrl ||
|
const seedData = diagnosisPreview.disease
|
||||||
"https://placehold.co/600x400?text=Foto+Daun"
|
? diseaseCatalogSeed.find(
|
||||||
}
|
(seed) =>
|
||||||
confidence={diagnosisPreview.confidence ?? 0}
|
seed.commonName === diagnosisPreview.disease?.commonName,
|
||||||
diseaseName={
|
)
|
||||||
diagnosisPreview.disease?.commonName ?? "Tidak Diketahui"
|
: null;
|
||||||
}
|
|
||||||
scientificName={diagnosisPreview.disease?.label ?? ""}
|
// If the API doesn't return medicine recommendations, use the seed data as a fallback
|
||||||
riskLevel={diagnosisPreview.disease?.riskLevel ?? "Sedang"}
|
const finalMedicines =
|
||||||
description={
|
(diagnosisPreview.disease as any)?.medicineRecommendations ||
|
||||||
diagnosisPreview.disease?.description ??
|
seedData?.medicineRecommendations ||
|
||||||
diagnosisPreview.disease?.summary ??
|
[];
|
||||||
"Deskripsi tidak tersedia."
|
|
||||||
}
|
return (
|
||||||
symptoms={diagnosisPreview.disease?.symptoms ?? []}
|
<DiagnosisResultView
|
||||||
preventions={diagnosisPreview.disease?.recommendations ?? []}
|
imageUrl={
|
||||||
medicines={
|
previewUrl ||
|
||||||
(diagnosisPreview.disease as any)?.medicineRecommendations ?? []
|
diagnosisPreview.imageUrl ||
|
||||||
}
|
"https://placehold.co/600x400?text=Foto+Daun"
|
||||||
/>
|
}
|
||||||
|
confidence={diagnosisPreview.confidence ?? 0}
|
||||||
|
diseaseName={
|
||||||
|
diagnosisPreview.disease?.commonName ?? "Tidak Diketahui"
|
||||||
|
}
|
||||||
|
scientificName={diagnosisPreview.disease?.label ?? ""}
|
||||||
|
riskLevel={diagnosisPreview.disease?.riskLevel ?? "Sedang"}
|
||||||
|
description={
|
||||||
|
diagnosisPreview.disease?.description ??
|
||||||
|
diagnosisPreview.disease?.summary ??
|
||||||
|
"Deskripsi tidak tersedia."
|
||||||
|
}
|
||||||
|
symptoms={diagnosisPreview.disease?.symptoms ?? []}
|
||||||
|
preventions={diagnosisPreview.disease?.recommendations ?? []}
|
||||||
|
medicines={finalMedicines} // Datanya terhubung ke sini!
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
})()}
|
||||||
|
|
||||||
{/* All Model Predictions */}
|
{/* All Model Predictions */}
|
||||||
{diagnosisPreview.predictions &&
|
{diagnosisPreview.predictions &&
|
||||||
|
|||||||
Reference in New Issue
Block a user