import { useState } from "react"; import { Search, X } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, DialogClose, } from "@/components/ui/dialog"; export type SearchCriteria = { searchTerm: string; searchBy: "name" | "insuranceProvider" | "phone" | "insuranceId" | "all"; }; interface PatientSearchProps { onSearch: (criteria: SearchCriteria) => void; onClearSearch: () => void; isSearchActive: boolean; } export function PatientSearch({ onSearch, onClearSearch, isSearchActive, }: PatientSearchProps) { const [searchTerm, setSearchTerm] = useState(""); const [searchBy, setSearchBy] = useState("all"); const [showAdvanced, setShowAdvanced] = useState(false); const [advancedCriteria, setAdvancedCriteria] = useState({ searchTerm: "", searchBy: "all", }); const handleSearch = () => { onSearch({ searchTerm, searchBy, }); }; const handleClear = () => { setSearchTerm(""); setSearchBy("all"); onClearSearch(); }; const handleAdvancedSearch = () => { onSearch(advancedCriteria); setShowAdvanced(false); }; const updateAdvancedCriteria = (field: keyof SearchCriteria, value: string) => { setAdvancedCriteria({ ...advancedCriteria, [field]: value, }); }; return (
setSearchTerm(e.target.value)} className="pr-10" onKeyDown={(e) => { if (e.key === "Enter") { handleSearch(); } }} /> {searchTerm && ( )}
Advanced Search Search for patients using multiple criteria
updateAdvancedCriteria("searchTerm", e.target.value) } placeholder="Enter search term..." />
{isSearchActive && ( )}
); }