// ========== 问诊相关 ==========
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