'use client'; import { useState, useCallback } from 'react'; import { motion } from 'framer-motion'; import { HeartPulse, Search, Pill, Stethoscope, FileText, AlertTriangle, Clock, Loader2, Sparkles, Activity, Thermometer, Brain, Eye, Bone, Wind, Droplet, Shield, } from 'lucide-react'; interface Symptom { id: string; name: string; icon: React.ElementType; category: string; } interface Article { id: string; title: string; category: string; readTime: string; icon: string; } const commonSymptoms: Symptom[] = [ { id: '1', name: 'Головная боль', icon: Brain, category: 'Неврология' }, { id: '2', name: 'Температура', icon: Thermometer, category: 'Общие' }, { id: '3', name: 'Боль в горле', icon: Wind, category: 'ЛОР' }, { id: '4', name: 'Боль в спине', icon: Bone, category: 'Ортопедия' }, { id: '5', name: 'Проблемы со зрением', icon: Eye, category: 'Офтальмология' }, { id: '6', name: 'Давление', icon: Activity, category: 'Кардиология' }, { id: '7', name: 'Аллергия', icon: Droplet, category: 'Аллергология' }, { id: '8', name: 'Усталость', icon: HeartPulse, category: 'Общие' }, ]; const healthArticles: Article[] = [ { id: '1', title: 'Как укрепить иммунитет зимой', category: 'Профилактика', readTime: '5 мин', icon: '🛡️', }, { id: '2', title: 'Правильное питание для сердца', category: 'Кардиология', readTime: '7 мин', icon: '❤️', }, { id: '3', title: 'Упражнения для здоровой спины', category: 'Ортопедия', readTime: '6 мин', icon: '🏃', }, { id: '4', title: 'Как справиться со стрессом', category: 'Психология', readTime: '8 мин', icon: '🧘', }, ]; const quickServices = [ { icon: Stethoscope, label: 'Найти врача', color: 'bg-blue-500/10 text-blue-600' }, { icon: Pill, label: 'Справочник лекарств', color: 'bg-green-500/10 text-green-600' }, { icon: FileText, label: 'Анализы', color: 'bg-purple-500/10 text-purple-600' }, { icon: Sparkles, label: 'AI Консультант', color: 'active-gradient text-gradient' }, ]; function SymptomButton({ symptom, onClick }: { symptom: Symptom; onClick: () => void }) { return ( {symptom.name} ); } function ArticleCard({ article, delay }: { article: Article; delay: number }) { return ( {article.icon} {article.title} {article.category} • {article.readTime} ); } export default function MedicinePage() { const [searchQuery, setSearchQuery] = useState(''); const [isLoading, setIsLoading] = useState(false); const [aiResponse, setAiResponse] = useState(null); const handleAIConsult = useCallback(async () => { if (!searchQuery.trim()) return; setIsLoading(true); setAiResponse(null); await new Promise((resolve) => setTimeout(resolve, 2000)); setAiResponse( 'На основе описанных симптомов рекомендую обратиться к терапевту для первичного осмотра. ' + 'Это может быть связано с несколькими причинами, которые требуют диагностики. ' + 'До визита к врачу: пейте больше жидкости, отдыхайте, избегайте переохлаждения.' ); setIsLoading(false); }, [searchQuery]); const handleSymptomClick = (symptomName: string) => { setSearchQuery(symptomName); }; return ( {/* Header */} Медицина AI-помощник по здоровью и медицине {/* Disclaimer */} Важно Информация носит справочный характер и не заменяет консультацию врача. При серьёзных симптомах обратитесь к специалисту. {/* AI Search */} setSearchQuery(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleAIConsult()} placeholder="Опишите симптомы или задайте вопрос о здоровье..." className="w-full h-12 pl-12 pr-4 bg-surface/50 border border-border/50 rounded-xl text-sm text-primary placeholder:text-muted focus:outline-none focus:border-accent/50 focus:ring-1 focus:ring-accent/20 transition-all" /> {isLoading ? ( <> AI анализирует... > ) : ( <> Получить консультацию AI > )} {/* AI Response */} {aiResponse && ( Рекомендация AI {aiResponse} )} {/* Quick Services */} {quickServices.map((service) => ( {service.label} ))} {/* Common Symptoms */} Частые симптомы {commonSymptoms.map((symptom) => ( handleSymptomClick(symptom.name)} /> ))} {/* Health Articles */} Полезные статьи {healthArticles.map((article, i) => ( ))} {/* Emergency Info */} Экстренная помощь При угрозе жизни немедленно вызывайте скорую помощь 📞 103 📞 112 ); }
AI-помощник по здоровью и медицине
Важно
Информация носит справочный характер и не заменяет консультацию врача. При серьёзных симптомах обратитесь к специалисту.
{aiResponse}
При угрозе жизни немедленно вызывайте скорую помощь