// ========== 问诊相关 ========== function startConsultation($patient_id) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO consultations (patient_id, status) VALUES (?, 'pending')"); $stmt->execute([$patient_id]); return $db->lastInsertId(); } function saveAnswer($consultation_id, $question_index, $answer) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO consultation_answers (consultation_id, question_index, answer) VALUES (?, ?, ?)"); $stmt->execute([$consultation_id, $question_index, $answer]); // 更新qa_content $qa = "Q{$question_index}: {$answer}\n"; $stmt = $db->prepare("UPDATE consultations SET qa_content = CONCAT(IFNULL(qa_content,''), ?) WHERE id = ?"); $stmt->execute([$qa, $consultation_id]); } function completeConsultation($consultation_id) { $db = dbConnect(); // 模拟AI辨证(实际可调用API) $syndromes = ['肝郁脾虚证','气滞血瘀证','气血两虚证','湿热蕴结证','风寒束表证','阴虚内热证','肾阳虚证','痰湿内阻证']; $ai_syndrome = $syndromes[array_rand($syndromes)]; $ai_treatment = match ($ai_syndrome) { '肝郁脾虚证'=>'疏肝健脾','气滞血瘀证'=>'活血化瘀','气血两虚证'=>'补气养血', '湿热蕴结证'=>'清热利湿','风寒束表证'=>'辛温解表','阴虚内热证'=>'滋阴清热', '肾阳虚证'=>'温补肾阳','痰湿内阻证'=>'燥湿化痰', default=>'辨证施治', }; $stmt = $db->prepare("UPDATE consultations SET status='review', ai_syndrome=?, ai_treatment=?, summary=? WHERE id=?"); $stmt->execute([$ai_syndrome, $ai_treatment, "AI初步辨证:{$ai_syndrome}", $consultation_id]); addLog($_SESSION['user']['id'], "完成AI问诊 #{$consultation_id}"); return true; } // ========== 医生操作 ========== function assignDoctor($consultation_id, $doctor_id) { $db = dbConnect(); $stmt = $db->prepare("UPDATE consultations SET doctor_id = ? WHERE id = ?"); $stmt->execute([$doctor_id, $consultation_id]); } function takeoverConsultation($consultation_id, $doctor_id) { $db = dbConnect(); $stmt = $db->prepare("UPDATE consultations SET doctor_id = ?, status = 'review' WHERE id = ?"); $stmt->execute([$doctor_id, $consultation_id]); addLog($doctor_id, "接管问诊 #{$consultation_id}"); } function saveDiagnosis($consultation_id, $syndrome, $treatment, $prescription_text, $advice) { $db = dbConnect(); // 解析处方为结构化JSON $herbs = []; if ($prescription_text) { foreach (explode("\n", $prescription_text) as $line) { $parts = explode(':', trim($line)); if (count($parts) >= 2) { $herbs[] = ['name'=>$parts[0], 'dose'=>$parts[1]??'', 'usage'=>$parts[2]??'']; } } } $prescription_json = json_encode($herbs); $stmt = $db->prepare("UPDATE consultations SET syndrome=?, treatment=?, prescription=?, prescription_text=?, advice=?, status='done', updated_at=NOW() WHERE id=?"); $stmt->execute([$syndrome, $treatment, $prescription_json, $prescription_text, $advice, $consultation_id]); addLog($_SESSION['user']['id'], "提交诊断 #{$consultation_id}"); } function rejectConsultation($consultation_id) { $db = dbConnect(); $stmt = $db->prepare("UPDATE consultations SET status='rejected' WHERE id=?"); $stmt->execute([$consultation_id]); addLog($_SESSION['user']['id'], "驳回问诊 #{$consultation_id}"); } // ========== 文件管理 ========== function saveFile($user_id, $consultation_id, $filename, $filepath, $filetype) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO files (user_id, consultation_id, filename, filepath, filetype) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$user_id, $consultation_id, $filename, $filepath, $filetype]); return $db->lastInsertId(); } function getFilesForConsultation($consultation_id) { $db = dbConnect(); $stmt = $db->prepare("SELECT * FROM files WHERE consultation_id = ?"); $stmt->execute([$consultation_id]); return $stmt->fetchAll(); } // ========== 四诊 ========== function saveFourDiagnosis($consultation_id, $inspection, $auscultation, $interrogation, $palpation, $tongue, $pulse) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO four_diagnosis (consultation_id, inspection, auscultation, interrogation, palpation, tongue, pulse) VALUES (?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE inspection=?, auscultation=?, interrogation=?, palpation=?, tongue=?, pulse=?"); $stmt->execute([$consultation_id, $inspection, $auscultation, $interrogation, $palpation, $tongue, $pulse, $inspection, $auscultation, $interrogation, $palpation, $tongue, $pulse]); } function getFourDiagnosis($consultation_id) { $db = dbConnect(); $stmt = $db->prepare("SELECT * FROM four_diagnosis WHERE consultation_id = ?"); $stmt->execute([$consultation_id]); return $stmt->fetch(); } // ========== 中药库管理 ========== function addHerb($name, $property, $channel, $effect, $usage) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO herbs (name, property, channel, effect, usage) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$name, $property, $channel, $effect, $usage]); return $db->lastInsertId(); } function updateHerb($id, $name, $property, $channel, $effect, $usage) { $db = dbConnect(); $stmt = $db->prepare("UPDATE herbs SET name=?, property=?, channel=?, effect=?, usage=? WHERE id=?"); $stmt->execute([$name, $property, $channel, $effect, $usage, $id]); } function deleteHerb($id) { $db = dbConnect(); $stmt = $db->prepare("DELETE FROM herbs WHERE id=?"); $stmt->execute([$id]); } // ========== 用户管理(管理员) ========== function updateUserRole($user_id, $role) { $db = dbConnect(); $stmt = $db->prepare("UPDATE users SET role=? WHERE id=?"); $stmt->execute([$role, $user_id]); } function verifyDoctor($user_id) { $db = dbConnect(); $stmt = $db->prepare("UPDATE users SET verified=1 WHERE id=? AND role='doctor'"); $stmt->execute([$user_id]); } function deleteUser($user_id) { $db = dbConnect(); $stmt = $db->prepare("DELETE FROM users WHERE id=?"); $stmt->execute([$user_id]); } // ========== 系统设置 ========== function getSetting($key) { $db = dbConnect(); $stmt = $db->prepare("SELECT value FROM settings WHERE `key`=?"); $stmt->execute([$key]); $row = $stmt->fetch(); return $row ? $row['value'] : null; } function setSetting($key, $value) { $db = dbConnect(); $stmt = $db->prepare("INSERT INTO settings (`key`, `value`) VALUES (?, ?) ON DUPLICATE KEY UPDATE value=?"); $stmt->execute([$key, $value, $value]); } // ========== 复诊数据 ========== function getFollowupData($patient_id) { $db = dbConnect(); $stmt = $db->prepare("SELECT * FROM consultations WHERE patient_id=? AND status='done' ORDER BY created_at"); $stmt->execute([$patient_id]); return $stmt->fetchAll(); }
Fatal error: Cannot redeclare renderRegisterPage() (previously declared in /www/wwwroot/fj5767.icu/includes/auth.php:59) in /www/wwwroot/fj5767.icu/includes/auth.php on line 105