import { useState } from 'react'; import { XIcon } from 'lucide-react'; interface ReportModalProps { isOpen: boolean; onClose: () => void; onSubmit: (formData: FormData) => void; analysisId: string; analysisSummaryJson: string; } export interface ReportFormData { patient_id: string; exam_date: string; metadata: { physician: string; facility: string; specimen_type: string; clinical_history?: string; }; notes?: string; analysis_id: string; } export function ReportModal({ isOpen, onClose, onSubmit, analysisId, analysisSummaryJson }: ReportModalProps) { const [formData, setFormData] = useState({ patient_id: '', exam_date: new Date().toISOString().split('T')[0], metadata: { physician: '', facility: '', specimen_type: '', clinical_history: '', }, notes: '', analysis_id: analysisId, }); if (!isOpen) return null; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); // Build FormData for FastAPI endpoint const payload = new FormData(); payload.append("patient_id", formData.patient_id); payload.append("exam_date", formData.exam_date); payload.append("metadata", JSON.stringify(formData.metadata)); payload.append("notes", formData.notes || ""); payload.append("analysis_id", formData.analysis_id); payload.append("analysis_summary", analysisSummaryJson); // Pass the FormData object to the parent onSubmit onSubmit(payload); }; const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; if (name.startsWith('metadata.')) { const field = name.split('.')[1]; setFormData(prev => ({ ...prev, metadata: { ...prev.metadata, [field]: value, }, })); } else { setFormData(prev => ({ ...prev, [name]: value, })); } }; return (

Generate Medical Report

{/* Patient Information */}

Patient Information

{/* Slide Metadata */}

Slide Metadata

{/* Notes */}

Doctor's Notes