import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { api } from '../lib/api'; import type { ApiResponse } from '../lib/api'; import type { PatientRecord, PatientProfileUpdate } from '../types'; /** * دریافت یک پروندهٔ بیمار به‌همراه پروفایل کامل (`profile`). * منبع: GET /api/v1/patient/{uuid}. کلید کوئری: ['patient', uuid]. */ export function usePatient(uuid: string | undefined) { const query = useQuery>({ queryKey: ['patient', uuid], queryFn: () => api.get(`/api/v1/patient/${uuid}`), enabled: !!uuid, }); const record = query.data?.data ?? null; return { record, profile: record?.profile ?? null, isLoading: query.isLoading, isError: query.isError, }; } /** * به‌روزرسانی partial پروفایل بیمار. * منبع: PATCH /api/v1/patient/{uuid}. پس از موفقیت، کوئری همان بیمار را invalidate می‌کند. */ export function useUpdatePatient(uuid: string) { const qc = useQueryClient(); return useMutation, unknown, PatientProfileUpdate>({ mutationFn: (body) => api.patch(`/api/v1/patient/${uuid}`, body), onSuccess: () => { qc.invalidateQueries({ queryKey: ['patient', uuid] }); }, }); }