// ============================================================ // SICK VISIT — /api/sick-visit/note // ============================================================ import { useState } from 'react'; import { useMutation } from '@tanstack/react-query'; import { api, ApiError } from '@/lib/api'; import type { VisitNoteOk } from '@/shared/types'; import { SickVisitRequestSchema, type SickVisitRequest } from '@/shared/schemas'; export default function SickVisit() { const [patientAge, setPatientAge] = useState(''); const [patientGender, setPatientGender] = useState(''); const [chiefComplaint, setChiefComplaint] = useState(''); const [transcript, setTranscript] = useState(''); const [result, setResult] = useState(null); const [validationError, setValidationError] = useState(null); const generate = useMutation({ mutationFn: (body) => api.post('/api/sick-visit/note', body), onSuccess: (data) => setResult(data.note), }); function submit(e: React.FormEvent) { e.preventDefault(); setValidationError(null); const body: SickVisitRequest = { patientAge, patientGender, chiefComplaint, transcript }; const parsed = SickVisitRequestSchema.safeParse(body); if (!parsed.success) { setValidationError(parsed.error.issues.map((i: { message: string }) => i.message).join(', ')); return; } setResult(null); generate.mutate(parsed.data); } const input = 'w-full rounded-md border border-input bg-background px-3 py-2 text-sm'; return (

Sick Visit

Chief complaint + transcript → structured sick-visit note.