{"id":607,"date":"2025-06-29T09:38:09","date_gmt":"2025-06-29T09:38:09","guid":{"rendered":"https:\/\/easyaccsoft.com\/webdesign\/?p=607"},"modified":"2025-06-29T09:40:30","modified_gmt":"2025-06-29T09:40:30","slug":"mysql-php%e4%b8%8e%e4%b8%ad%e5%8c%bb%e8%be%a9%e8%af%81%e8%ae%ba%e6%b2%bb%e8%87%aa%e5%8a%a8%e5%8c%96%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"https:\/\/easyaccsoft.com\/webdesign\/2025\/06\/29\/mysql-php%e4%b8%8e%e4%b8%ad%e5%8c%bb%e8%be%a9%e8%af%81%e8%ae%ba%e6%b2%bb%e8%87%aa%e5%8a%a8%e5%8c%96%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"MySQL, PHP\u4e0e\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u81ea\u52a8\u5316\u7cfb\u7edf"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u7cfb\u7edf\u6982\u8ff0<\/h2>\n\n\n\n<p>\u8fd9\u4e2a\u7cfb\u7edf\u5c06\u4f7f\u7528MySQL\u4f5c\u4e3a\u6570\u636e\u5e93\uff0cPHP\u4f5c\u4e3a\u540e\u7aef\u8bed\u8a00\uff0c\u6784\u5efa\u4e00\u4e2a\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u7684\u81ea\u52a8\u5316\u5e73\u53f0\u3002\u7cfb\u7edf\u80fd\u591f\u6839\u636e\u60a3\u8005\u75c7\u72b6\u81ea\u52a8\u5206\u6790\u8fa9\u8bc1\u7c7b\u578b\uff0c\u5e76\u63d0\u4f9b\u76f8\u5e94\u7684\u6cbb\u7597\u5efa\u8bae\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6570\u636e\u5e93\u8bbe\u8ba1(MySQL)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>-- \u521b\u5efa\u6570\u636e\u5e93\nCREATE DATABASE tcm_diagnosis;\n\n-- \u4f7f\u7528\u6570\u636e\u5e93\nUSE tcm_diagnosis;\n\n-- \u75c7\u72b6\u8868\nCREATE TABLE symptoms (\n    symptom_id INT AUTO_INCREMENT PRIMARY KEY,\n    symptom_name VARCHAR(100) NOT NULL,\n    description TEXT,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- \u8bc1\u578b\u8868\nCREATE TABLE syndromes (\n    syndrome_id INT AUTO_INCREMENT PRIMARY KEY,\n    syndrome_name VARCHAR(100) NOT NULL,\n    description TEXT,\n    pathogenesis TEXT,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- \u75c7\u72b6-\u8bc1\u578b\u5173\u8054\u8868\nCREATE TABLE symptom_syndrome_relations (\n    relation_id INT AUTO_INCREMENT PRIMARY KEY,\n    symptom_id INT,\n    syndrome_id INT,\n    weight DECIMAL(3,2) DEFAULT 1.00,\n    FOREIGN KEY (symptom_id) REFERENCES symptoms(symptom_id),\n    FOREIGN KEY (syndrome_id) REFERENCES syndromes(syndrome_id),\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- \u6cbb\u7597\u65b9\u6848\u8868\nCREATE TABLE treatments (\n    treatment_id INT AUTO_INCREMENT PRIMARY KEY,\n    syndrome_id INT,\n    treatment_name VARCHAR(100) NOT NULL,\n    treatment_method TEXT,\n    herbal_prescription TEXT,\n    acupuncture_points TEXT,\n    diet_advice TEXT,\n    lifestyle_advice TEXT,\n    FOREIGN KEY (syndrome_id) REFERENCES syndromes(syndrome_id),\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- \u60a3\u8005\u8bb0\u5f55\u8868\nCREATE TABLE patients (\n    patient_id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(50),\n    gender ENUM('\u7537', '\u5973'),\n    age INT,\n    contact VARCHAR(20),\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- \u8bca\u65ad\u8bb0\u5f55\u8868\nCREATE TABLE diagnosis_records (\n    record_id INT AUTO_INCREMENT PRIMARY KEY,\n    patient_id INT,\n    diagnosis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    tongue_description TEXT,\n    pulse_description TEXT,\n    other_observations TEXT,\n    FOREIGN KEY (patient_id) REFERENCES patients(patient_id)\n);\n\n-- \u8bca\u65ad\u8bb0\u5f55-\u75c7\u72b6\u5173\u8054\u8868\nCREATE TABLE record_symptoms (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    record_id INT,\n    symptom_id INT,\n    severity ENUM('\u8f7b', '\u4e2d', '\u91cd'),\n    FOREIGN KEY (record_id) REFERENCES diagnosis_records(record_id),\n    FOREIGN KEY (symptom_id) REFERENCES symptoms(symptom_id)\n);\n\n-- \u8bca\u65ad\u7ed3\u679c\u8868\nCREATE TABLE diagnosis_results (\n    result_id INT AUTO_INCREMENT PRIMARY KEY,\n    record_id INT,\n    syndrome_id INT,\n    confidence_score DECIMAL(5,2),\n    treatment_id INT,\n    notes TEXT,\n    FOREIGN KEY (record_id) REFERENCES diagnosis_records(record_id),\n    FOREIGN KEY (syndrome_id) REFERENCES syndromes(syndrome_id),\n    FOREIGN KEY (treatment_id) REFERENCES treatments(treatment_id)\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PHP\u540e\u7aef\u5b9e\u73b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6570\u636e\u5e93\u8fde\u63a5 (db_connect.php)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n$host = 'localhost';\n$dbname = 'tcm_diagnosis';\n$username = 'root';\n$password = '';\n\ntry {\n    $pdo = new PDO(\"mysql:host=$host;dbname=$dbname;charset=utf8\", $username, $password);\n    $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n} catch (PDOException $e) {\n    die(\"\u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25: \" . $e-&gt;getMessage());\n}\n?&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u8fa9\u8bc1\u8bba\u6cbb\u6838\u5fc3\u903b\u8f91 (diagnosis.php)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nrequire_once 'db_connect.php';\n\nclass TCMDiagnosis {\n    private $pdo;\n\n    public function __construct($pdo) {\n        $this-&gt;pdo = $pdo;\n    }\n\n    \/\/ \u6dfb\u52a0\u65b0\u75c7\u72b6\n    public function addSymptom($name, $description) {\n        $stmt = $this-&gt;pdo-&gt;prepare(\"INSERT INTO symptoms (symptom_name, description) VALUES (?, ?)\");\n        $stmt-&gt;execute(&#91;$name, $description]);\n        return $this-&gt;pdo-&gt;lastInsertId();\n    }\n\n    \/\/ \u6dfb\u52a0\u65b0\u8bc1\u578b\n    public function addSyndrome($name, $description, $pathogenesis) {\n        $stmt = $this-&gt;pdo-&gt;prepare(\"INSERT INTO syndromes (syndrome_name, description, pathogenesis) VALUES (?, ?, ?)\");\n        $stmt-&gt;execute(&#91;$name, $description, $pathogenesis]);\n        return $this-&gt;pdo-&gt;lastInsertId();\n    }\n\n    \/\/ \u5173\u8054\u75c7\u72b6\u4e0e\u8bc1\u578b\n    public function linkSymptomToSyndrome($symptomId, $syndromeId, $weight = 1.0) {\n        $stmt = $this-&gt;pdo-&gt;prepare(\"INSERT INTO symptom_syndrome_relations (symptom_id, syndrome_id, weight) VALUES (?, ?, ?)\");\n        $stmt-&gt;execute(&#91;$symptomId, $syndromeId, $weight]);\n        return $this-&gt;pdo-&gt;lastInsertId();\n    }\n\n    \/\/ \u6dfb\u52a0\u6cbb\u7597\u65b9\u6848\n    public function addTreatment($syndromeId, $name, $method, $herbs, $acupuncture, $diet, $lifestyle) {\n        $stmt = $this-&gt;pdo-&gt;prepare(\"INSERT INTO treatments (syndrome_id, treatment_name, treatment_method, herbal_prescription, acupuncture_points, diet_advice, lifestyle_advice) VALUES (?, ?, ?, ?, ?, ?, ?)\");\n        $stmt-&gt;execute(&#91;$syndromeId, $name, $method, $herbs, $acupuncture, $diet, $lifestyle]);\n        return $this-&gt;pdo-&gt;lastInsertId();\n    }\n\n    \/\/ \u6839\u636e\u75c7\u72b6\u8fdb\u884c\u8fa9\u8bc1\n    public function diagnose($symptomIds) {\n        \/\/ \u83b7\u53d6\u6240\u6709\u76f8\u5173\u8bc1\u578b\u53ca\u5176\u6743\u91cd\n        $placeholders = implode(',', array_fill(0, count($symptomIds), '?'));\n        $stmt = $this-&gt;pdo-&gt;prepare(\"\n            SELECT s.syndrome_id, s.syndrome_name, SUM(ssr.weight) as total_weight\n            FROM syndromes s\n            JOIN symptom_syndrome_relations ssr ON s.syndrome_id = ssr.syndrome_id\n            WHERE ssr.symptom_id IN ($placeholders)\n            GROUP BY s.syndrome_id\n            ORDER BY total_weight DESC\n        \");\n        $stmt-&gt;execute($symptomIds);\n        $possibleSyndromes = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n\n        if (empty($possibleSyndromes)) {\n            return &#91;'error' =&gt; '\u65e0\u6cd5\u6839\u636e\u63d0\u4f9b\u7684\u75c7\u72b6\u786e\u5b9a\u8bc1\u578b'];\n        }\n\n        \/\/ \u83b7\u53d6\u6700\u53ef\u80fd\u7684\u8bc1\u578b\n        $primarySyndrome = $possibleSyndromes&#91;0];\n\n        \/\/ \u83b7\u53d6\u8be5\u8bc1\u578b\u7684\u6cbb\u7597\u65b9\u6848\n        $stmt = $this-&gt;pdo-&gt;prepare(\"\n            SELECT * FROM treatments \n            WHERE syndrome_id = ?\n            ORDER BY treatment_id LIMIT 1\n        \");\n        $stmt-&gt;execute(&#91;$primarySyndrome&#91;'syndrome_id']]);\n        $treatment = $stmt-&gt;fetch(PDO::FETCH_ASSOC);\n\n        \/\/ \u8ba1\u7b97\u7f6e\u4fe1\u5ea6 (\u7b80\u5316\u7248)\n        $maxPossibleWeight = count($symptomIds) * 1.0; \/\/ \u5047\u8bbe\u6700\u5927\u6743\u91cd\u4e3a1.0\n        $confidence = ($primarySyndrome&#91;'total_weight'] \/ $maxPossibleWeight) * 100;\n\n        return &#91;\n            'syndrome' =&gt; $primarySyndrome,\n            'treatment' =&gt; $treatment,\n            'confidence' =&gt; round($confidence, 2),\n            'other_possible' =&gt; array_slice($possibleSyndromes, 1)\n        ];\n    }\n\n    \/\/ \u521b\u5efa\u60a3\u8005\u8bb0\u5f55\n    public function createPatientRecord($patientData, $symptoms, $tongue, $pulse, $other) {\n        \/\/ \u6dfb\u52a0\u60a3\u8005\u57fa\u672c\u4fe1\u606f\n        $stmt = $this-&gt;pdo-&gt;prepare(\"\n            INSERT INTO patients (name, gender, age, contact) \n            VALUES (?, ?, ?, ?)\n        \");\n        $stmt-&gt;execute(&#91;\n            $patientData&#91;'name'],\n            $patientData&#91;'gender'],\n            $patientData&#91;'age'],\n            $patientData&#91;'contact']\n        ]);\n        $patientId = $this-&gt;pdo-&gt;lastInsertId();\n\n        \/\/ \u6dfb\u52a0\u8bca\u65ad\u8bb0\u5f55\n        $stmt = $this-&gt;pdo-&gt;prepare(\"\n            INSERT INTO diagnosis_records (patient_id, tongue_description, pulse_description, other_observations)\n            VALUES (?, ?, ?, ?)\n        \");\n        $stmt-&gt;execute(&#91;$patientId, $tongue, $pulse, $other]);\n        $recordId = $this-&gt;pdo-&gt;lastInsertId();\n\n        \/\/ \u6dfb\u52a0\u75c7\u72b6\u5173\u8054\n        foreach ($symptoms as $symptom) {\n            $stmt = $this-&gt;pdo-&gt;prepare(\"\n                INSERT INTO record_symptoms (record_id, symptom_id, severity)\n                VALUES (?, ?, ?)\n            \");\n            $stmt-&gt;execute(&#91;$recordId, $symptom&#91;'id'], $symptom&#91;'severity']]);\n        }\n\n        \/\/ \u8fdb\u884c\u8fa9\u8bc1\n        $symptomIds = array_column($symptoms, 'id');\n        $diagnosisResult = $this-&gt;diagnose($symptomIds);\n\n        \/\/ \u4fdd\u5b58\u8bca\u65ad\u7ed3\u679c\n        if (!isset($diagnosisResult&#91;'error'])) {\n            $stmt = $this-&gt;pdo-&gt;prepare(\"\n                INSERT INTO diagnosis_results (record_id, syndrome_id, confidence_score, treatment_id)\n                VALUES (?, ?, ?, ?)\n            \");\n            $stmt-&gt;execute(&#91;\n                $recordId,\n                $diagnosisResult&#91;'syndrome']&#91;'syndrome_id'],\n                $diagnosisResult&#91;'confidence'],\n                $diagnosisResult&#91;'treatment']&#91;'treatment_id']\n            ]);\n\n            $diagnosisResult&#91;'record_id'] = $recordId;\n        }\n\n        return $diagnosisResult;\n    }\n\n    \/\/ \u83b7\u53d6\u60a3\u8005\u5386\u53f2\u8bb0\u5f55\n    public function getPatientHistory($patientId) {\n        $stmt = $this-&gt;pdo-&gt;prepare(\"\n            SELECT dr.*, dr.diagnosis_date, \n                   GROUP_CONCAT(s.symptom_name SEPARATOR ', ') as symptoms,\n                   s.syndrome_name, s.description as syndrome_desc,\n                   t.treatment_method, t.herbal_prescription,\n                   dr.confidence_score\n            FROM diagnosis_records dr\n            LEFT JOIN record_symptoms rs ON dr.record_id = rs.record_id\n            LEFT JOIN symptoms s ON rs.symptom_id = s.symptom_id\n            LEFT JOIN diagnosis_results dr ON dr.record_id = dr.record_id\n            LEFT JOIN syndromes s ON dr.syndrome_id = s.syndrome_id\n            LEFT JOIN treatments t ON dr.treatment_id = t.treatment_id\n            WHERE dr.patient_id = ?\n            GROUP BY dr.record_id\n            ORDER BY dr.diagnosis_date DESC\n        \");\n        $stmt-&gt;execute(&#91;$patientId]);\n        return $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n    }\n}\n?&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u524d\u7aef\u63a5\u53e3\u793a\u4f8b (API endpoints)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nrequire_once 'db_connect.php';\nrequire_once 'diagnosis.php';\n\nheader(\"Content-Type: application\/json\");\n\n$tcm = new TCMDiagnosis($pdo);\n\n$action = $_GET&#91;'action'] ?? '';\n\ntry {\n    switch ($action) {\n        case 'diagnose':\n            $symptoms = json_decode(file_get_contents('php:\/\/input'), true);\n            $result = $tcm-&gt;diagnose($symptoms);\n            echo json_encode($result);\n            break;\n\n        case 'create_record':\n            $data = json_decode(file_get_contents('php:\/\/input'), true);\n            $result = $tcm-&gt;createPatientRecord(\n                $data&#91;'patient'],\n                $data&#91;'symptoms'],\n                $data&#91;'tongue'],\n                $data&#91;'pulse'],\n                $data&#91;'other']\n            );\n            echo json_encode($result);\n            break;\n\n        case 'patient_history':\n            $patientId = $_GET&#91;'patient_id'];\n            $history = $tcm-&gt;getPatientHistory($patientId);\n            echo json_encode($history);\n            break;\n\n        default:\n            echo json_encode(&#91;'error' =&gt; '\u65e0\u6548\u7684\u64cd\u4f5c']);\n    }\n} catch (Exception $e) {\n    echo json_encode(&#91;'error' =&gt; $e-&gt;getMessage()]);\n}\n?&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u7cfb\u7edf\u529f\u80fd\u6269\u5c55\u5efa\u8bae<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u77e5\u8bc6\u5e93\u5b8c\u5584<\/strong>\uff1a\u6dfb\u52a0\u66f4\u591a\u4e2d\u533b\u75c7\u72b6\u3001\u8bc1\u578b\u53ca\u5176\u5173\u8054\u5173\u7cfb\uff0c\u63d0\u9ad8\u7cfb\u7edf\u51c6\u786e\u6027<\/li>\n\n\n\n<li><strong>\u673a\u5668\u5b66\u4e60\u96c6\u6210<\/strong>\uff1a\u4f7f\u7528\u5386\u53f2\u8bca\u65ad\u6570\u636e\u8bad\u7ec3\u6a21\u578b\uff0c\u4f18\u5316\u8fa9\u8bc1\u7b97\u6cd5<\/li>\n\n\n\n<li><strong>\u4e2d\u836f\u6570\u636e\u5e93<\/strong>\uff1a\u5efa\u7acb\u5b8c\u6574\u7684\u4e2d\u836f\u5e93\uff0c\u5305\u62ec\u6027\u5473\u5f52\u7ecf\u3001\u529f\u6548\u7b49\u4fe1\u606f<\/li>\n\n\n\n<li><strong>\u65b9\u5242\u7ba1\u7406\u7cfb\u7edf<\/strong>\uff1a\u7ba1\u7406\u7ecf\u5178\u65b9\u5242\u548c\u81ea\u62df\u65b9\u5242<\/li>\n\n\n\n<li><strong>\u820c\u8c61\u5206\u6790<\/strong>\uff1a\u96c6\u6210\u56fe\u50cf\u8bc6\u522b\u6280\u672f\u5206\u6790\u820c\u8c61<\/li>\n\n\n\n<li><strong>\u8109\u8c61\u5206\u6790<\/strong>\uff1a\u5982\u6709\u786c\u4ef6\u652f\u6301\uff0c\u53ef\u6dfb\u52a0\u8109\u8c61\u5206\u6790\u529f\u80fd<\/li>\n\n\n\n<li><strong>\u62a5\u8868\u751f\u6210<\/strong>\uff1a\u751f\u6210\u8bca\u65ad\u62a5\u544a\u548c\u6cbb\u7597\u65b9\u6848\u6587\u6863<\/li>\n<\/ol>\n\n\n\n<p>\u8fd9\u4e2a\u7cfb\u7edf\u63d0\u4f9b\u4e86\u4e00\u4e2a\u57fa\u7840\u6846\u67b6\uff0c\u5b9e\u9645\u5e94\u7528\u4e2d\u9700\u8981\u6839\u636e\u5177\u4f53\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u548c\u6269\u5c55\uff0c\u7279\u522b\u662f\u4e2d\u533b\u77e5\u8bc6\u5e93\u7684\u6784\u5efa\u9700\u8981\u4e13\u4e1a\u4e2d\u533b\u5e08\u7684\u53c2\u4e0e\u4ee5\u786e\u4fdd\u51c6\u786e\u6027\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u5982\u4f55\u5e94\u7528\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u81ea\u52a8\u5316\u7cfb\u7edf<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u7cfb\u7edf\u90e8\u7f72\u6b65\u9aa4<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u73af\u5883\u51c6\u5907<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u670d\u52a1\u5668\u73af\u5883<\/strong>\uff1a\u5b89\u88c5Apache\/Nginx\u3001PHP(7.4+)\u548cMySQL(5.7+)<\/li>\n\n\n\n<li><strong>\u6570\u636e\u5e93\u914d\u7f6e<\/strong>\uff1a\u6267\u884c\u63d0\u4f9b\u7684SQL\u811a\u672c\u521b\u5efa\u6570\u636e\u5e93\u7ed3\u6784<\/li>\n\n\n\n<li><strong>PHP\u914d\u7f6e<\/strong>\uff1a\u786e\u4fdd\u5df2\u5b89\u88c5PDO MySQL\u6269\u5c55<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u7cfb\u7edf\u5b89\u88c5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5c06PHP\u6587\u4ef6\u4e0a\u4f20\u5230Web\u670d\u52a1\u5668<\/li>\n\n\n\n<li>\u4fee\u6539<code>db_connect.php<\/code>\u4e2d\u7684\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f<\/li>\n\n\n\n<li>\u8bbf\u95ee\u7cfb\u7edf\u9996\u9875\u8fdb\u884c\u6d4b\u8bd5<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u57fa\u7840\u6570\u636e\u5f55\u5165<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5f55\u5165\u4e2d\u533b\u75c7\u72b6\u6570\u636e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u793a\u4f8b\uff1a\u6dfb\u52a0\u5e38\u89c1\u75c7\u72b6\n$tcm-&gt;addSymptom('\u5934\u75db', '\u5934\u90e8\u75bc\u75db\uff0c\u53ef\u80fd\u4e3a\u80c0\u75db\u3001\u523a\u75db\u7b49\u4e0d\u540c\u7c7b\u578b');\n$tcm-&gt;addSymptom('\u53d1\u70ed', '\u4f53\u6e29\u9ad8\u4e8e\u6b63\u5e38\u8303\u56f4');\n$tcm-&gt;addSymptom('\u54b3\u55fd', '\u80ba\u6c14\u4e0a\u9006\u4f5c\u58f0\uff0c\u54af\u5410\u75f0\u6db2');\n\/\/ \u53ef\u7ee7\u7eed\u6dfb\u52a0\u66f4\u591a\u75c7\u72b6...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u5f55\u5165\u4e2d\u533b\u8bc1\u578b\u6570\u636e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u793a\u4f8b\uff1a\u6dfb\u52a0\u5e38\u89c1\u8bc1\u578b\n$tcm-&gt;addSyndrome(\n    '\u98ce\u5bd2\u611f\u5192', \n    '\u56e0\u98ce\u5bd2\u4e4b\u90aa\u5916\u88ad\u3001\u80ba\u6c14\u5931\u5ba3\u6240\u81f4', \n    '\u98ce\u5bd2\u5916\u88ad\uff0c\u536b\u9633\u88ab\u90c1\uff0c\u8160\u7406\u95ed\u585e\uff0c\u80ba\u6c14\u4e0d\u5ba3'\n);\n\n$tcm-&gt;addSyndrome(\n    '\u98ce\u70ed\u611f\u5192', \n    '\u56e0\u98ce\u70ed\u4e4b\u90aa\u72af\u8868\u3001\u80ba\u6c14\u5931\u548c\u6240\u81f4', \n    '\u98ce\u70ed\u72af\u8868\uff0c\u70ed\u90c1\u808c\u8160\uff0c\u536b\u8868\u5931\u548c\uff0c\u80ba\u5931\u6e05\u8083'\n);\n\/\/ \u53ef\u7ee7\u7eed\u6dfb\u52a0\u66f4\u591a\u8bc1\u578b...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u5efa\u7acb\u75c7\u72b6\u4e0e\u8bc1\u578b\u5173\u8054<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u98ce\u5bd2\u611f\u5192\u76f8\u5173\u75c7\u72b6\u5173\u8054\n$tcm-&gt;linkSymptomToSyndrome(1, 1, 0.9); \/\/ \u5934\u75db-\u98ce\u5bd2\u611f\u5192\n$tcm-&gt;linkSymptomToSyndrome(2, 1, 0.7); \/\/ \u53d1\u70ed-\u98ce\u5bd2\u611f\u5192(\u4f4e\u70ed)\n$tcm-&gt;linkSymptomToSyndrome(3, 1, 0.8); \/\/ \u54b3\u55fd-\u98ce\u5bd2\u611f\u5192\n\n\/\/ \u98ce\u70ed\u611f\u5192\u76f8\u5173\u75c7\u72b6\u5173\u8054\n$tcm-&gt;linkSymptomToSyndrome(1, 2, 0.6); \/\/ \u5934\u75db-\u98ce\u70ed\u611f\u5192\n$tcm-&gt;linkSymptomToSyndrome(2, 2, 0.9); \/\/ \u53d1\u70ed-\u98ce\u70ed\u611f\u5192(\u9ad8\u70ed)\n$tcm-&gt;linkSymptomToSyndrome(3, 2, 0.7); \/\/ \u54b3\u55fd-\u98ce\u70ed\u611f\u5192<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u6dfb\u52a0\u6cbb\u7597\u65b9\u6848<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u98ce\u5bd2\u611f\u5192\u6cbb\u7597\u65b9\u6848\n$tcm-&gt;addTreatment(\n    1, \/\/ \u98ce\u5bd2\u611f\u5192\u8bc1\u578bID\n    '\u8f9b\u6e29\u89e3\u8868\u6cd5', \n    '\u53d1\u6c57\u89e3\u8868\uff0c\u758f\u98ce\u6563\u5bd2', \n    '\u9ebb\u9ec49g\u3001\u6842\u679d6g\u3001\u674f\u4ec19g\u3001\u7518\u83493g', \n    '\u98ce\u6c60\u3001\u98ce\u5e9c\u3001\u5217\u7f3a\u3001\u5408\u8c37', \n    '\u5b9c\u98df\u8f9b\u6e29\u53d1\u6563\u98df\u7269\u5982\u751f\u59dc\u3001\u8471\u767d', \n    '\u907f\u98ce\u5bd2\uff0c\u9002\u5f53\u4f11\u606f\uff0c\u4fdd\u6301\u6e29\u6696'\n);\n\n\/\/ \u98ce\u70ed\u611f\u5192\u6cbb\u7597\u65b9\u6848\n$tcm-&gt;addTreatment(\n    2, \/\/ \u98ce\u70ed\u611f\u5192\u8bc1\u578bID\n    '\u8f9b\u51c9\u89e3\u8868\u6cd5', \n    '\u758f\u98ce\u6e05\u70ed\uff0c\u5ba3\u80ba\u89e3\u8868', \n    '\u94f6\u82b19g\u3001\u8fde\u7fd89g\u3001\u7af9\u53f66g\u3001\u8346\u82a56g\u3001\u725b\u84a1\u5b509g\u3001\u6de1\u8c46\u8c496g\u3001\u8584\u83776g\u3001\u7518\u83493g', \n    '\u5927\u690e\u3001\u66f2\u6c60\u3001\u5408\u8c37\u3001\u5916\u5173', \n    '\u5b9c\u98df\u8f9b\u51c9\u900f\u8868\u98df\u7269\u5982\u8584\u8377\u3001\u83ca\u82b1', \n    '\u591a\u996e\u6c34\uff0c\u4fdd\u6301\u5ba4\u5185\u901a\u98ce'\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9e\u9645\u5e94\u7528\u573a\u666f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u95e8\u8bca\u8bca\u65ad\u6d41\u7a0b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u60a3\u8005\u4fe1\u606f\u5f55\u5165<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $patientData = &#91;\n       'name' =&gt; '\u5f20\u67d0\u67d0',\n       'gender' =&gt; '\u7537',\n       'age' =&gt; 45,\n       'contact' =&gt; '13800138000'\n   ];<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u75c7\u72b6\u6536\u96c6<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $symptoms = &#91;\n       &#91;'id' =&gt; 1, 'severity' =&gt; '\u4e2d'], \/\/ \u5934\u75db(\u4e2d\u5ea6)\n       &#91;'id' =&gt; 2, 'severity' =&gt; '\u8f7b'], \/\/ \u53d1\u70ed(\u8f7b\u5ea6)\n       &#91;'id' =&gt; 3, 'severity' =&gt; '\u91cd']  \/\/ \u54b3\u55fd(\u91cd\u5ea6)\n   ];<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u56db\u8bca\u4fe1\u606f<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $tongue = '\u820c\u6de1\u7ea2\uff0c\u82d4\u8584\u767d';\n   $pulse = '\u8109\u6d6e\u7d27';\n   $other = '\u6076\u5bd2\u91cd\uff0c\u53d1\u70ed\u8f7b\uff0c\u65e0\u6c57';<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u6267\u884c\u8bca\u65ad<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $result = $tcm-&gt;createPatientRecord($patientData, $symptoms, $tongue, $pulse, $other);<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>\u8f93\u51fa\u7ed3\u679c<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   echo \"\u6700\u53ef\u80fd\u8bc1\u578b: \" . $result&#91;'syndrome']&#91;'syndrome_name'] . \"\\n\";\n   echo \"\u7f6e\u4fe1\u5ea6: \" . $result&#91;'confidence'] . \"%\\n\";\n   echo \"\u6cbb\u7597\u65b9\u6848: \" . $result&#91;'treatment']&#91;'treatment_method'] . \"\\n\";\n   echo \"\u4e2d\u836f\u5904\u65b9: \" . $result&#91;'treatment']&#91;'herbal_prescription'] . \"\\n\";<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u60a3\u8005\u5386\u53f2\u67e5\u8be2<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$history = $tcm-&gt;getPatientHistory(1); \/\/ \u67e5\u8be2\u60a3\u8005ID\u4e3a1\u7684\u5386\u53f2\u8bb0\u5f55\nforeach ($history as $record) {\n    echo \"\u65e5\u671f: \" . $record&#91;'diagnosis_date'] . \"\\n\";\n    echo \"\u75c7\u72b6: \" . $record&#91;'symptoms'] . \"\\n\";\n    echo \"\u8bca\u65ad: \" . $record&#91;'syndrome_name'] . \"\\n\";\n    echo \"\u5904\u65b9: \" . $record&#91;'herbal_prescription'] . \"\\n\\n\";\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u7cfb\u7edf\u4f18\u5316\u5efa\u8bae<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u77e5\u8bc6\u5e93\u5b8c\u5584<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9080\u8bf7\u4e2d\u533b\u4e13\u5bb6\u53c2\u4e0e\u75c7\u72b6\u3001\u8bc1\u578b\u548c\u6cbb\u7597\u65b9\u6848\u7684\u5ba1\u6838<\/li>\n\n\n\n<li>\u6dfb\u52a0\u66f4\u591a\u8bc1\u578b\u5982\u6c14\u865a\u3001\u8840\u865a\u3001\u75f0\u6e7f\u7b49<\/li>\n\n\n\n<li>\u5b8c\u5584\u75c7\u72b6\u7684\u7ec6\u5206\uff08\u5982\u5934\u75db\u90e8\u4f4d\u3001\u6027\u8d28\u7b49\uff09<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7b97\u6cd5\u4f18\u5316<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6839\u636e\u75c7\u72b6\u4e25\u91cd\u7a0b\u5ea6\u8c03\u6574\u6743\u91cd<\/li>\n\n\n\n<li>\u8003\u8651\u75c7\u72b6\u7ec4\u5408\u7684\u7279\u6b8a\u610f\u4e49<\/li>\n\n\n\n<li>\u6dfb\u52a0\u6392\u9664\u89c4\u5219\uff08\u67d0\u4e9b\u75c7\u72b6\u7ec4\u5408\u53ef\u6392\u9664\u7279\u5b9a\u8bc1\u578b\uff09<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7528\u6237\u754c\u9762\u5f00\u53d1<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5f00\u53d1Web\u754c\u9762\u65b9\u4fbf\u533b\u751f\u4f7f\u7528<\/li>\n\n\n\n<li>\u6dfb\u52a0\u75c7\u72b6\u9009\u62e9\u6811\u72b6\u7ed3\u6784<\/li>\n\n\n\n<li>\u5f00\u53d1\u79fb\u52a8\u7aef\u5e94\u7528\u652f\u6301\u8fdc\u7a0b\u8bca\u7597<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6570\u636e\u5206\u6790\u529f\u80fd<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7edf\u8ba1\u5e38\u89c1\u8bc1\u578b\u5206\u5e03<\/li>\n\n\n\n<li>\u5206\u6790\u6cbb\u7597\u65b9\u6848\u6709\u6548\u6027<\/li>\n\n\n\n<li>\u53d1\u73b0\u75c7\u72b6\u5173\u8054\u89c4\u5f8b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7cfb\u7edf\u96c6\u6210<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e0e\u533b\u9662HIS\u7cfb\u7edf\u5bf9\u63a5<\/li>\n\n\n\n<li>\u6dfb\u52a0\u7535\u5b50\u75c5\u5386\u529f\u80fd<\/li>\n\n\n\n<li>\u652f\u6301\u5904\u65b9\u6253\u5370\u548c\u5bfc\u51fa<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e13\u4e1a\u76d1\u7763<\/strong>\uff1a\u7cfb\u7edf\u5e94\u59cb\u7ec8\u5728\u4e2d\u533b\u5e08\u76d1\u7763\u4e0b\u4f7f\u7528\uff0c\u4e0d\u80fd\u5b8c\u5168\u66ff\u4ee3\u4e13\u4e1a\u5224\u65ad<\/li>\n\n\n\n<li><strong>\u6570\u636e\u5b89\u5168<\/strong>\uff1a\u60a3\u8005\u533b\u7597\u6570\u636e\u9700\u52a0\u5bc6\u5b58\u50a8\uff0c\u7b26\u5408\u533b\u7597\u6570\u636e\u4fdd\u62a4\u89c4\u8303<\/li>\n\n\n\n<li><strong>\u6301\u7eed\u66f4\u65b0<\/strong>\uff1a\u4e2d\u533b\u77e5\u8bc6\u5e93\u9700\u8981\u5b9a\u671f\u66f4\u65b0\u548c\u7ef4\u62a4<\/li>\n\n\n\n<li><strong>\u4e2a\u6027\u5316\u8c03\u6574<\/strong>\uff1a\u7cfb\u7edf\u63d0\u4f9b\u7684\u6cbb\u7597\u65b9\u6848\u5e94\u6839\u636e\u60a3\u8005\u5177\u4f53\u60c5\u51b5\u8c03\u6574<\/li>\n<\/ol>\n\n\n\n<p>\u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u60a8\u53ef\u4ee5\u90e8\u7f72\u548c\u5e94\u7528\u8fd9\u4e2a\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u81ea\u52a8\u5316\u7cfb\u7edf\uff0c\u8f85\u52a9\u4e2d\u533b\u4e34\u5e8a\u8bca\u65ad\u548c\u6cbb\u7597\u65b9\u6848\u5236\u5b9a\u3002\u7cfb\u7edf\u6838\u5fc3\u4ef7\u503c\u5728\u4e8e\u6807\u51c6\u5316\u4e2d\u533b\u8fa9\u8bc1\u6d41\u7a0b\u548c\u63d0\u9ad8\u8bca\u65ad\u6548\u7387\uff0c\u4f46\u6700\u7ec8\u51b3\u7b56\u4ecd\u9700\u4f9d\u8d56\u533b\u5e08\u7684\u4e13\u4e1a\u5224\u65ad\u3002<\/p>\n\n\n\n<p>Certainly! Let me explain the <code>linkSymptomToSyndrome()<\/code> method and these specific examples in detail.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding <code>linkSymptomToSyndrome()<\/code><\/h3>\n\n\n\n<p>This method establishes a weighted relationship between a symptom and a syndrome (\u4e2d\u533b\u8bc1\u578b) in the TCM (Traditional Chinese Medicine) diagnosis system. The parameters are:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$tcm-&gt;linkSymptomToSyndrome($symptomId, $syndromeId, $weight);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$symptomId<\/strong>: The ID of the symptom (from the <code>symptoms<\/code> table)<\/li>\n\n\n\n<li><strong>$syndromeId<\/strong>: The ID of the syndrome (from the <code>syndromes<\/code> table)<\/li>\n\n\n\n<li><strong>$weight<\/strong>: A decimal value (typically 0.0-1.0) representing how strongly this symptom indicates this particular syndrome<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Your Specific Examples Explained<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5934\u75db (Headache) &#8211; \u98ce\u5bd2\u611f\u5192 (Wind-Cold Common Cold)<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $tcm-&gt;linkSymptomToSyndrome(1, 1, 0.9);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This means headache (symptom ID 1) is very strongly associated (weight 0.9) with wind-cold common cold (syndrome ID 1)<\/li>\n\n\n\n<li>In TCM theory, headache is a primary symptom of wind-cold invasion, especially when the pain is in the occipital region and worsens with cold<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u53d1\u70ed (Fever) &#8211; \u98ce\u5bd2\u611f\u5192 (Wind-Cold Common Cold)<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $tcm-&gt;linkSymptomToSyndrome(2, 1, 0.7);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fever (symptom ID 2) is moderately associated (weight 0.7) with wind-cold<\/li>\n\n\n\n<li>Note the lower weight because in wind-cold patterns, fever is typically mild (\u4f4e\u70ed) compared to wind-heat patterns where fever is more pronounced<\/li>\n\n\n\n<li>The comment &#8220;(\u4f4e\u70ed)&#8221; reminds us this is for low-grade fever<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u54b3\u55fd (Cough) &#8211; \u98ce\u5bd2\u611f\u5192 (Wind-Cold Common Cold)<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>   $tcm-&gt;linkSymptomToSyndrome(3, 1, 0.8);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cough (symptom ID 3) is strongly associated (weight 0.8) with wind-cold<\/li>\n\n\n\n<li>In wind-cold patterns, the cough is typically with thin white phlegm and may be accompanied by an itchy throat<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Clinical Significance<\/h3>\n\n\n\n<p>These weights reflect TCM clinical patterns:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>High weight (0.9)<\/strong>: Nearly pathognomonic for this syndrome (e.g., occipital headache for wind-cold)<\/li>\n\n\n\n<li><strong>Medium weight (0.7-0.8)<\/strong>: Common but not exclusive to this syndrome<\/li>\n\n\n\n<li><strong>Low weight (&lt;0.5)<\/strong>: May appear but not characteristic<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How the System Uses These Relationships<\/h3>\n\n\n\n<p>When a patient presents with multiple symptoms:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The system sums weights for each possible syndrome<\/li>\n\n\n\n<li>Syndromes with higher total weights are more likely<\/li>\n\n\n\n<li>For your examples, a patient with headache + fever + cough would score:<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wind-cold: 0.9 + 0.7 + 0.8 = 2.4<\/li>\n\n\n\n<li>Compare this to other syndromes&#8217; scores to determine the most likely pattern<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Important Notes<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Weights should be determined by:<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Classical TCM texts<\/li>\n\n\n\n<li>Clinical experience<\/li>\n\n\n\n<li>Statistical analysis of cases<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>These relationships form the core of the pattern differentiation (\u8fa9\u8bc1) algorithm<\/li>\n\n\n\n<li>A complete system would have many more such relationships to cover all common TCM patterns<\/li>\n<\/ol>\n\n\n\n<p>Would you like me to explain how to determine appropriate weights or how to extend this to more complex patterns?<\/p>\n\n\n\n<p>\u597d\u7684\uff0c\u6211\u7528\u4e2d\u6587\u8be6\u7ec6\u89e3\u91ca\u8fd9\u4e9b\u75c7\u72b6\u4e0e\u8bc1\u578b\u7684\u5173\u8054\u5173\u7cfb\uff1a<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><code>linkSymptomToSyndrome()<\/code> \u65b9\u6cd5\u7684\u4f5c\u7528<\/strong><\/h3>\n\n\n\n<p>\u8fd9\u662f\u4e2d\u533b\u8fa8\u8bc1\u7cfb\u7edf\u4e2d\u7528\u4e8e <strong>\u5efa\u7acb\u75c7\u72b6\u4e0e\u8bc1\u578b\u5173\u8054\u5173\u7cfb<\/strong> \u7684\u6838\u5fc3\u65b9\u6cd5\uff0c\u53c2\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$tcm-&gt;linkSymptomToSyndrome(\u75c7\u72b6ID, \u8bc1\u578bID, \u6743\u91cd\u503c);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u75c7\u72b6ID<\/strong>\uff1a\u5bf9\u5e94<code>symptoms<\/code>\u8868\u4e2d\u7684\u75c7\u72b6\uff08\u5982\u5934\u75db\u3001\u53d1\u70ed\uff09<\/li>\n\n\n\n<li><strong>\u8bc1\u578bID<\/strong>\uff1a\u5bf9\u5e94<code>syndromes<\/code>\u8868\u4e2d\u7684\u8bc1\u578b\uff08\u5982\u98ce\u5bd2\u611f\u5192\u3001\u98ce\u70ed\u611f\u5192\uff09<\/li>\n\n\n\n<li><strong>\u6743\u91cd\u503c<\/strong>\uff1a0.0~1.0\u7684\u5c0f\u6570\uff0c\u8868\u793a <strong>\u8be5\u75c7\u72b6\u5bf9\u8be5\u8bc1\u578b\u7684\u6307\u5411\u6027\u5f3a\u5ea6<\/strong>\uff08\u8d8a\u63a5\u8fd11\uff0c\u5173\u8054\u6027\u8d8a\u5f3a\uff09<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u5177\u4f53\u793a\u4f8b\u89e3\u6790<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. \u5934\u75db \u2192 \u98ce\u5bd2\u611f\u5192\uff08\u6743\u91cd0.9\uff09<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$tcm-&gt;linkSymptomToSyndrome(1, 1, 0.9); \/\/ \u5934\u75db-\u98ce\u5bd2\u611f\u5192<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4e2d\u533b\u7406\u8bba\u4f9d\u636e<\/strong>\uff1a<br>\u98ce\u5bd2\u611f\u5192\u7684\u5934\u75db\u7279\u70b9\u662f <strong>\u540e\u8111\u52fa\u75bc\u75db\u660e\u663e<\/strong>\uff0c\u4f34\u968f\u6015\u98ce\u6015\u51b7\uff0c\u75bc\u75db\u9047\u5bd2\u52a0\u91cd\u3002\u8fd9\u662f\u98ce\u5bd2\u8868\u8bc1\u7684\u5178\u578b\u8868\u73b0\uff0c\u56e0\u6b64\u6743\u91cd\u5f88\u9ad8\uff080.9\uff09\u3002<\/li>\n\n\n\n<li><strong>\u4e34\u5e8a\u610f\u4e49<\/strong>\uff1a<br>\u5982\u679c\u60a3\u8005\u6709\u5934\u75db\uff0c\u7cfb\u7edf\u4f1a\u4f18\u5148\u8003\u8651\u98ce\u5bd2\u611f\u5192\u7684\u53ef\u80fd\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2. \u53d1\u70ed \u2192 \u98ce\u5bd2\u611f\u5192\uff08\u6743\u91cd0.7\uff0c\u6807\u6ce8&#8221;\u4f4e\u70ed&#8221;\uff09<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$tcm-&gt;linkSymptomToSyndrome(2, 1, 0.7); \/\/ \u53d1\u70ed-\u98ce\u5bd2\u611f\u5192(\u4f4e\u70ed)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4e2d\u533b\u7406\u8bba\u4f9d\u636e<\/strong>\uff1a<br>\u98ce\u5bd2\u611f\u5192\u7684\u53d1\u70ed\u901a\u5e38\u662f <strong>\u4f4e\u70ed\uff08\u4f53\u6e29\u8f7b\u5ea6\u5347\u9ad8\uff09<\/strong>\uff0c\u4e14\u60a3\u8005\u81ea\u89c9\u6076\u5bd2\uff08\u6015\u51b7\uff09\u91cd\u4e8e\u53d1\u70ed\u3002\u76f8\u6bd4\u98ce\u70ed\u611f\u5192\u7684\u9ad8\u70ed\uff0c\u98ce\u5bd2\u53d1\u70ed\u7684\u6743\u91cd\u8f83\u4f4e\uff080.7\uff09\u3002<\/li>\n\n\n\n<li><strong>\u5173\u952e\u533a\u522b<\/strong>\uff1a<br>\u5982\u679c\u662f\u98ce\u70ed\u611f\u5192\uff0c\u53d1\u70ed\u6743\u91cd\u53ef\u80fd\u8bbe\u4e3a0.9\uff08\u56e0\u98ce\u70ed\u4ee5\u9ad8\u70ed\u4e3a\u4e3b\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3. \u54b3\u55fd \u2192 \u98ce\u5bd2\u611f\u5192\uff08\u6743\u91cd0.8\uff09<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$tcm-&gt;linkSymptomToSyndrome(3, 1, 0.8); \/\/ \u54b3\u55fd-\u98ce\u5bd2\u611f\u5192<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4e2d\u533b\u7406\u8bba\u4f9d\u636e<\/strong>\uff1a<br>\u98ce\u5bd2\u54b3\u55fd\u7684\u7279\u70b9\u662f <strong>\u54b3\u58f0\u91cd\u6d4a\u3001\u75f0\u767d\u6e05\u7a00<\/strong>\uff0c\u4f34\u5589\u75d2\uff0c\u56e0\u80ba\u6c14\u88ab\u5bd2\u90aa\u90c1\u95ed\u6240\u81f4\u3002\u8fd9\u662f\u98ce\u5bd2\u88ad\u80ba\u7684\u5e38\u89c1\u75c7\u72b6\uff0c\u4f46\u54b3\u55fd\u4e5f\u53ef\u89c1\u4e8e\u5176\u4ed6\u8bc1\u578b\uff08\u5982\u98ce\u70ed\u3001\u75f0\u6e7f\uff09\uff0c\u56e0\u6b64\u6743\u91cd\u7565\u4f4e\u4e8e\u5934\u75db\uff080.8\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6743\u91cd\u8bbe\u5b9a\u7684\u4e34\u5e8a\u903b\u8f91<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6743\u91cd\u8303\u56f4<\/th><th>\u542b\u4e49<\/th><th>\u793a\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>0.9~1.0<\/td><td><strong>\u9ad8\u5ea6\u7279\u5f02\u6027\u75c7\u72b6<\/strong>\uff08\u51e0\u4e4e\u53ef\u786e\u5b9a\u8bc1\u578b\uff09<\/td><td>\u98ce\u5bd2\u611f\u5192\u7684\u540e\u8111\u5934\u75db<\/td><\/tr><tr><td>0.7~0.8<\/td><td><strong>\u5e38\u89c1\u4f46\u4e0d\u552f\u4e00<\/strong>\u7684\u75c7\u72b6<\/td><td>\u98ce\u5bd2\u611f\u5192\u7684\u54b3\u55fd\u3001\u4f4e\u70ed<\/td><\/tr><tr><td>&lt;0.5<\/td><td><strong>\u975e\u5178\u578b\u75c7\u72b6<\/strong>\uff08\u9700\u7ed3\u5408\u5176\u4ed6\u75c7\u72b6\uff09<\/td><td>\u98ce\u5bd2\u611f\u5192\u5076\u5c14\u51fa\u73b0\u7684\u9f3b\u585e\uff080.4\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u7cfb\u7edf\u5982\u4f55\u8ba1\u7b97\u8fa8\u8bc1\u7ed3\u679c\uff1f<\/strong><\/h3>\n\n\n\n<p>\u5047\u8bbe\u60a3\u8005\u6709\u4ee5\u4e0b\u75c7\u72b6\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5934\u75db\uff08ID=1\uff09<\/li>\n\n\n\n<li>\u53d1\u70ed\uff08ID=2\uff09<\/li>\n\n\n\n<li>\u54b3\u55fd\uff08ID=3\uff09<\/li>\n<\/ol>\n\n\n\n<p>\u7cfb\u7edf\u4f1a\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u904d\u5386\u6240\u6709\u5173\u8054\u8bc1\u578b<\/strong>\uff0c\u8ba1\u7b97\u603b\u5206\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u98ce\u5bd2\u611f\u5192\u603b\u5206 = 0.9\uff08\u5934\u75db\uff09 + 0.7\uff08\u53d1\u70ed\uff09 + 0.8\uff08\u54b3\u55fd\uff09 = <strong>2.4<\/strong><\/li>\n\n\n\n<li>\u98ce\u70ed\u611f\u5192\u603b\u5206\uff08\u5047\u8bbe\u5173\u8054\u6743\u91cd\u4e0d\u540c\uff09= 0.6 + 0.9 + 0.5 = <strong>2.0<\/strong><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u9009\u62e9\u603b\u5206\u6700\u9ad8\u7684\u8bc1\u578b<\/strong>\uff08\u6b64\u4f8b\u4e2d\u4f18\u5148\u8fa8\u4e3a\u98ce\u5bd2\u611f\u5192\uff09\u3002<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u5b9e\u9645\u5e94\u7528\u6ce8\u610f\u4e8b\u9879<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u52a8\u6001\u8c03\u6574\u6743\u91cd<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u60a3\u8005\u5934\u75db\u4e3a <strong>\u80c0\u75db<\/strong>\uff08\u98ce\u70ed\u7279\u5f81\uff09\uff0c\u53ef\u80fd\u9700\u8981\u964d\u4f4e\u98ce\u5bd2\u6743\u91cd\u3002<\/li>\n\n\n\n<li>\u820c\u8109\u4fe1\u606f\uff08\u5982\u82d4\u767d\u3001\u8109\u6d6e\u7d27\uff09\u53ef\u989d\u5916\u52a0\u5206\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u75c7\u72b6\u7ec4\u5408\u903b\u8f91<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u98ce\u5bd2\u611f\u5192\u7684\u5178\u578b\u7ec4\u5408\u662f <strong>\u5934\u75db+\u6076\u5bd2+\u65e0\u6c57+\u8109\u6d6e\u7d27<\/strong>\uff0c\u7ec4\u5408\u51fa\u73b0\u65f6\u6743\u91cd\u53ef\u53e0\u52a0\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6392\u9664\u89c4\u5219<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u82e5\u60a3\u8005\u6709 <strong>\u53e3\u6e34\u559c\u51b7\u996e<\/strong>\uff08\u98ce\u70ed\u7279\u5f81\uff09\uff0c\u5373\u4f7f\u6709\u5934\u75db\uff0c\u4e5f\u5e94\u964d\u4f4e\u98ce\u5bd2\u611f\u5192\u7684\u53ef\u80fd\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6269\u5c55\u5efa\u8bae<\/strong><\/h3>\n\n\n\n<p>\u5982\u679c\u9700\u8981\u66f4\u7cbe\u51c6\u7684\u8fa8\u8bc1\uff0c\u53ef\u4ee5\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7ec6\u5206\u75c7\u72b6\u5c5e\u6027<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5934\u75db\u5206\u4e3a&#8221;\u524d\u989d\u75db&#8221;\uff08\u9633\u660e\u7ecf\uff09\u3001&#8221;\u4e24\u4fa7\u75db&#8221;\uff08\u5c11\u9633\u7ecf\uff09\u3001&#8221;\u540e\u5934\u75db&#8221;\uff08\u592a\u9633\u7ecf\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6dfb\u52a0\u53cd\u5411\u6743\u91cd<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\u5982&#8221;\u9ad8\u70ed&#8221;\u5bf9\u98ce\u5bd2\u611f\u5192\u53ef\u80fd\u662f\u8d1f\u6743\u91cd\uff08-0.5\uff09\uff0c\u56e0\u98ce\u5bd2\u901a\u5e38\u4e0d\u51fa\u73b0\u9ad8\u70ed\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u9700\u8981\u8fdb\u4e00\u6b65\u8ba8\u8bba\u5177\u4f53\u75c7\u72b6\u7684\u6743\u91cd\u8bbe\u7f6e\u5417\uff1f\u6216\u8005\u5982\u4f55\u7ed3\u5408\u820c\u8109\u4fe1\u606f\u4f18\u5316\u7b97\u6cd5\uff1f<\/p>\n\n\n\n<p>\u597d\u7684\uff01\u6211\u4eec\u5c06\u4ece <strong>\u75c7\u72b6\u6743\u91cd\u7cbe\u7ec6\u5316\u8bbe\u7f6e<\/strong> \u548c <strong>\u820c\u8109\u4fe1\u606f\u6574\u5408\u7b97\u6cd5<\/strong> \u4e24\u4e2a\u65b9\u5411\u6df1\u5165\u63a2\u8ba8\u5982\u4f55\u4f18\u5316\u4e2d\u533b\u8fa8\u8bc1\u7cfb\u7edf\u3002\u4ee5\u4e0b\u662f\u5177\u4f53\u65b9\u6848\uff1a<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u3001\u75c7\u72b6\u6743\u91cd\u8bbe\u7f6e\u7684\u8fdb\u9636\u7b56\u7565<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. <strong>\u75c7\u72b6\u5206\u7ea7\u4e0e\u52a8\u6001\u6743\u91cd<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>-- \u6570\u636e\u5e93\u4f18\u5316\uff1a\u75c7\u72b6\u8868\u6dfb\u52a0\u7279\u5f81\u5b57\u6bb5\nALTER TABLE symptoms ADD COLUMN specificity ENUM('\u9ad8', '\u4e2d', '\u4f4e') DEFAULT '\u4e2d';\nALTER TABLE symptoms ADD COLUMN intensity_affect BOOLEAN DEFAULT TRUE; -- \u662f\u5426\u53d7\u75c7\u72b6\u7a0b\u5ea6\u5f71\u54cd<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u75c7\u72b6\u7c7b\u578b<\/th><th>\u6743\u91cd\u8303\u56f4<\/th><th>\u793a\u4f8b<\/th><th>\u8c03\u6574\u903b\u8f91<\/th><\/tr><\/thead><tbody><tr><td><strong>\u6838\u5fc3\u75c7\u72b6<\/strong><\/td><td>0.8~1.0<\/td><td>\u98ce\u5bd2\u611f\u5192\u7684&#8221;\u6076\u5bd2\u65e0\u6c57&#8221;<\/td><td>\u5fc5\u987b\u51fa\u73b0\uff0c\u5426\u5219\u6392\u9664\u8be5\u8bc1\u578b<\/td><\/tr><tr><td><strong>\u5178\u578b\u75c7\u72b6<\/strong><\/td><td>0.6~0.8<\/td><td>\u98ce\u5bd2\u611f\u5192\u7684&#8221;\u9f3b\u6d41\u6e05\u6d95&#8221;<\/td><td>\u51fa\u73b02\u4e2a\u4ee5\u4e0a\u663e\u8457\u63d0\u5347\u8bc1\u578b\u6982\u7387<\/td><\/tr><tr><td><strong>\u975e\u7279\u5f02\u75c7\u72b6<\/strong><\/td><td>0.3~0.5<\/td><td>&#8220;\u4e4f\u529b&#8221;\uff08\u53ef\u89c1\u4e8e\u591a\u79cd\u8bc1\u578b\uff09<\/td><td>\u9700\u7ed3\u5408\u5176\u4ed6\u75c7\u72b6\u5224\u65ad<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>PHP\u5b9e\u73b0\u52a8\u6001\u6743\u91cd\u8c03\u6574<\/strong>\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u8003\u8651\u75c7\u72b6\u7a0b\u5ea6\uff08\u8f7b\/\u4e2d\/\u91cd\uff09\u7684\u6743\u91cd\u8ba1\u7b97\nfunction calculateAdjustedWeight($baseWeight, $severity) {\n    $multiplier = &#91;\n        '\u8f7b' =&gt; 0.7, \n        '\u4e2d' =&gt; 1.0,\n        '\u91cd' =&gt; 1.3\n    ];\n    return min(1.0, $baseWeight * $multiplier&#91;$severity]);\n}\n\n\/\/ \u793a\u4f8b\uff1a\u98ce\u5bd2\u54b3\u55fd\u75c7\u72b6\u91cd\u5ea6\u65f6\u6743\u91cd\u63d0\u5347\n$adjustedWeight = calculateAdjustedWeight(0.8, '\u91cd'); \/\/ 0.8 \u2192 1.04\uff08\u6700\u7ec8\u53d61.0\uff09<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>\u75c7\u72b6\u7ec4\u5408\u903b\u8f91<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u7279\u6b8a\u7ec4\u5408\u52a0\u6210\u89c4\u5219\uff08\u9700\u5728diagnose()\u65b9\u6cd5\u4e2d\u6dfb\u52a0\uff09\n$specialCombos = &#91;\n    '\u98ce\u5bd2\u611f\u5192' =&gt; &#91;\n        &#91;'symptoms' =&gt; &#91;1, 4], 'bonus' =&gt; 0.2], \/\/ \u5934\u75db+\u9f3b\u585e\u6e05\u6d95\n        &#91;'symptoms' =&gt; &#91;2, 5], 'bonus' =&gt; 0.3]  \/\/ \u53d1\u70ed+\u65e0\u6c57\n    ]\n];\n\n\/\/ \u5728\u8ba1\u7b97\u603b\u6743\u91cd\u65f6\u68c0\u67e5\u7ec4\u5408\nforeach ($specialCombos&#91;$syndrome] as $combo) {\n    if (array_intersect($combo&#91;'symptoms'], $inputSymptoms) == $combo&#91;'symptoms']) {\n        $totalWeight += $combo&#91;'bonus'];\n    }\n}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e8c\u3001\u820c\u8109\u4fe1\u606f\u7684\u6574\u5408\u7b97\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. <strong>\u820c\u8c61\u7279\u5f81\u91cf\u5316\u8868<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE tongue_features (\n    feature_id INT PRIMARY KEY,\n    feature_name VARCHAR(50) NOT NULL, -- \u5982\"\u820c\u6de1\u7ea2\"\u3001\"\u82d4\u8584\u767d\"\n    syndrome_weights JSON NOT NULL     -- \u5b58\u50a8\u5404\u8bc1\u578b\u7684\u5173\u8054\u6743\u91cd\n);\n\n-- \u793a\u4f8b\u6570\u636e\uff08\u98ce\u5bd2\u611f\u5192\u90e8\u5206\uff09\nINSERT INTO tongue_features VALUES\n(1, '\u820c\u6de1\u7ea2', '{\"\u98ce\u5bd2\u611f\u5192\":0.7, \"\u98ce\u70ed\u611f\u5192\":0.2}'),\n(2, '\u82d4\u8584\u767d', '{\"\u98ce\u5bd2\u611f\u5192\":0.8, \"\u75f0\u6e7f\u8bc1\":0.1}');<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>\u8109\u8c61\u7279\u5f81\u5904\u7406<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE pulse_patterns (\n    pattern_id INT PRIMARY KEY,\n    pattern_name VARCHAR(50) NOT NULL, -- \u5982\"\u8109\u6d6e\u7d27\"\n    syndrome_weights JSON NOT NULL\n);\n\n-- \u793a\u4f8b\u8109\u8c61\u6743\u91cd\nINSERT INTO pulse_patterns VALUES\n(1, '\u8109\u6d6e\u7d27', '{\"\u98ce\u5bd2\u611f\u5192\":0.9, \"\u8868\u5bd2\u8bc1\":0.85}'),\n(2, '\u8109\u6d6e\u6570', '{\"\u98ce\u70ed\u611f\u5192\":0.9, \"\u536b\u5206\u8bc1\":0.7}');<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3. <strong>\u7efc\u5408\u8fa8\u8bc1\u7b97\u6cd5\u5347\u7ea7<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u65b0\u7248diagnose()\u65b9\u6cd5\u52a0\u5165\u820c\u8109\u5206\u6790\npublic function diagnose($symptomIds, $tongueFeatureId, $pulsePatternId) {\n    \/\/ \u539f\u6709\u75c7\u72b6\u5206\u6790\n    $syndromeWeights = $this-&gt;calculateSymptomWeights($symptomIds);\n\n    \/\/ \u820c\u8c61\u5206\u6790\n    $tongueWeights = $this-&gt;getTongueWeights($tongueFeatureId);\n    foreach ($tongueWeights as $syndrome =&gt; $weight) {\n        $syndromeWeights&#91;$syndrome] += $weight * 0.5; \/\/ \u820c\u8c61\u6743\u91cd\u7cfb\u6570\n    }\n\n    \/\/ \u8109\u8c61\u5206\u6790\n    $pulseWeights = $this-&gt;getPulseWeights($pulsePatternId);\n    foreach ($pulseWeights as $syndrome =&gt; $weight) {\n        $syndromeWeights&#91;$syndrome] += $weight * 0.6; \/\/ \u8109\u8c61\u6743\u91cd\u7cfb\u6570\n    }\n\n    arsort($syndromeWeights);\n    return $syndromeWeights;\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4. <strong>\u51b2\u7a81\u5904\u7406\u89c4\u5219<\/strong><\/h4>\n\n\n\n<p>\u5f53\u75c7\u72b6\u4e0e\u820c\u8109\u77db\u76fe\u65f6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u5728\u8fd4\u56de\u7ed3\u679c\u524d\u6dfb\u52a0\u9a8c\u8bc1\nforeach ($syndromeWeights as $syndrome =&gt; $weight) {\n    if ($this-&gt;hasConflict($syndrome, $tongueFeatureId, $pulsePatternId)) {\n        $syndromeWeights&#91;$syndrome] *= 0.5; \/\/ \u77db\u76fe\u8bc1\u578b\u964d\u6743\n    }\n}\n\n\/\/ \u51b2\u7a81\u68c0\u6d4b\u793a\u4f8b\nprivate function hasConflict($syndrome, $tongueId, $pulseId) {\n    $conflicts = &#91;\n        '\u98ce\u5bd2\u611f\u5192' =&gt; &#91;\n            'tongue' =&gt; &#91;'\u820c\u7ea2\u82d4\u9ec4'], \/\/ \u98ce\u5bd2\u4e0d\u5e94\u51fa\u73b0\u70ed\u8c61\u820c\n            'pulse' =&gt; &#91;'\u8109\u6570']       \/\/ \u98ce\u5bd2\u8109\u5e94\u6d6e\u7d27\u800c\u975e\u6570\n        ]\n    ];\n    \/\/ \u68c0\u6d4b\u903b\u8f91\u5b9e\u73b0...\n}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e09\u3001\u4e34\u5e8a\u9a8c\u8bc1\u4e0e\u8c03\u53c2\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. **\u6743\u91cd\u6821\u51c6\u6d41\u7a0b<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>graph TD\n    A&#91;\u6536\u96c6\u4e34\u5e8a\u75c5\u4f8b\u6570\u636e] --&gt; B&#91;\u4e13\u5bb6\u6807\u6ce8\u6807\u51c6\u8fa8\u8bc1]\n    B --&gt; C&#91;\u7cfb\u7edf\u521d\u6b65\u9884\u6d4b]\n    C --&gt; D{\u5bf9\u6bd4\u5206\u6790}\n    D --&gt;|\u51c6\u786e\u7387&lt;85%| E&#91;\u8c03\u6574\u75c7\u72b6\/\u820c\u8109\u6743\u91cd]\n    D --&gt;|\u51c6\u786e\u7387\u226585%| F&#91;\u51bb\u7ed3\u5f53\u524d\u53c2\u6570\u7248\u672c]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>\u5173\u952e\u8c03\u53c2\u539f\u5219<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u820c\u8109\u6743\u91cd\u5360\u6bd4<\/strong>\uff1a\u5efa\u8bae\u75c7\u72b6\u536060%\uff0c\u820c\u8c6120%\uff0c\u8109\u8c6120%\uff08\u53ef\u6839\u636e\u75c5\u79cd\u8c03\u6574\uff09<\/li>\n\n\n\n<li><strong>\u5426\u51b3\u6027\u7279\u5f81<\/strong>\uff1a\u5982\u51fa\u73b0&#8221;\u820c\u7ea2\u7edb&#8221;\u5219\u76f4\u63a5\u6392\u9664\u98ce\u5bd2\u611f\u5192<\/li>\n\n\n\n<li><strong>\u5b63\u8282\u4fee\u6b63\u56e0\u5b50<\/strong>\uff1a\u51ac\u5b63\u98ce\u5bd2\u611f\u5192\u7684\u57fa\u7840\u6743\u91cd\u53ef\u4e0a\u6d6e10%<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u56db\u3001\u5b8c\u6574\u5e94\u7528\u793a\u4f8b<\/h3>\n\n\n\n<p><strong>\u573a\u666f<\/strong>\uff1a\u60a3\u8005\u51ac\u5b63\u5c31\u8bca\uff0c\u75c7\u72b6\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u75c7\u72b6\uff1a\u5267\u70c8\u5934\u75db\uff08\u91cd\uff09\u3001\u8f7b\u5ea6\u54b3\u55fd\uff08\u8f7b\uff09\u3001\u65e0\u6c57<\/li>\n\n\n\n<li>\u820c\u8c61\uff1a\u820c\u6de1\u7ea2\uff0c\u82d4\u8584\u767d\uff08ID=1\uff09<\/li>\n\n\n\n<li>\u8109\u8c61\uff1a\u8109\u6d6e\u7d27\uff08ID=1\uff09<\/li>\n<\/ul>\n\n\n\n<p><strong>\u7cfb\u7edf\u8fd0\u7b97\u8fc7\u7a0b<\/strong>\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u75c7\u72b6\u6743\u91cd\u8ba1\u7b97\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5934\u75db\uff1a1.0\uff08\u57fa\u78400.8 \u00d7 \u91cd\u5ea61.3\uff09<\/li>\n\n\n\n<li>\u54b3\u55fd\uff1a0.56\uff08\u57fa\u78400.8 \u00d7 \u8f7b\u5ea60.7\uff09<\/li>\n\n\n\n<li>\u65e0\u6c57\uff1a0.9\uff08\u7279\u6b8a\u75c7\u72b6\uff09<\/li>\n\n\n\n<li>\u7ec4\u5408\u52a0\u6210\uff1a\u5934\u75db+\u65e0\u6c57 \u2192 +0.3<\/li>\n\n\n\n<li>\u5b63\u8282\u52a0\u6210\uff1a\u00d71.1<\/li>\n\n\n\n<li><strong>\u5c0f\u8ba1<\/strong>\uff1a(1.0 + 0.56 + 0.9 + 0.3) \u00d7 1.1 = 3.036<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u820c\u8109\u6743\u91cd\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u820c\u8c61\uff1a0.7\uff08\u98ce\u5bd2\uff09<\/li>\n\n\n\n<li>\u8109\u8c61\uff1a0.9\uff08\u98ce\u5bd2\uff09<\/li>\n\n\n\n<li><strong>\u5c0f\u8ba1<\/strong>\uff1a0.7\u00d70.5 + 0.9\u00d70.6 = 0.89<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u603b\u5206<\/strong>\uff1a3.036 + 0.89 = 3.926 \u2192 \u786e\u8bca\u4e3a\u98ce\u5bd2\u611f\u5192<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u901a\u8fc7\u8fd9\u79cd\u7ed3\u6784\u5316\u8bbe\u8ba1\uff0c\u7cfb\u7edf\u53ef\u5b9e\u73b0\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u75c7\u72b6\u7279\u5f81\u91cf\u5316<\/strong>\u7684\u6807\u51c6\u5316\u8fa8\u8bc1<\/li>\n\n\n\n<li><strong>\u820c\u8109\u4fe1\u606f<\/strong>\u7684\u79d1\u5b66\u6574\u5408<\/li>\n\n\n\n<li><strong>\u4e34\u5e8a\u9002\u5e94\u6027<\/strong>\u7684\u52a8\u6001\u8c03\u6574<\/li>\n<\/ol>\n\n\n\n<p>\u9700\u8981\u7ee7\u7eed\u63a2\u8ba8\u5982\u4f55\u5b9e\u73b0\u673a\u5668\u5b66\u4e60\u52a8\u6001\u8c03\u53c2\uff0c\u6216\u662f\u5177\u4f53\u75c5\u79cd\uff08\u5982\u54b3\u55fd\u3001\u5931\u7720\uff09\u7684\u4e13\u9879\u4f18\u5316\u5417\uff1f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7cfb\u7edf\u6982\u8ff0 \u8fd9\u4e2a\u7cfb\u7edf\u5c06\u4f7f\u7528MySQL\u4f5c\u4e3a\u6570\u636e\u5e93\uff0cPHP\u4f5c\u4e3a\u540e\u7aef\u8bed\u8a00\uff0c\u6784\u5efa\u4e00\u4e2a\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u7684\u81ea\u52a8\u5316\u5e73\u53f0\u3002\u7cfb\u7edf\u80fd\u591f\u6839\u636e\u60a3\u8005\u75c7\u72b6\u81ea\u52a8\u5206\u6790\u8fa9\u8bc1\u7c7b\u578b\uff0c\u5e76\u63d0\u4f9b\u76f8\u5e94\u7684\u6cbb\u7597\u5efa\u8bae\u3002 \u6570\u636e\u5e93\u8bbe\u8ba1(MySQL) PHP\u540e\u7aef\u5b9e\u73b0 \u6570\u636e\u5e93\u8fde\u63a5 (db_connect.php) \u8fa9\u8bc1\u8bba\u6cbb\u6838\u5fc3\u903b\u8f91 (diagnosis.php) \u524d\u7aef\u63a5\u53e3\u793a\u4f8b (API endpoints) \u7cfb\u7edf\u529f\u80fd\u6269\u5c55\u5efa\u8bae \u8fd9\u4e2a\u7cfb\u7edf\u63d0\u4f9b\u4e86\u4e00\u4e2a\u57fa\u7840\u6846\u67b6\uff0c\u5b9e\u9645\u5e94\u7528\u4e2d\u9700\u8981\u6839\u636e\u5177\u4f53\u9700\u6c42\u8fdb\u884c\u8c03\u6574\u548c\u6269\u5c55\uff0c\u7279\u522b\u662f\u4e2d\u533b\u77e5\u8bc6\u5e93\u7684\u6784\u5efa\u9700\u8981\u4e13\u4e1a\u4e2d\u533b\u5e08\u7684\u53c2\u4e0e\u4ee5\u786e\u4fdd\u51c6\u786e\u6027\u3002 \u5982\u4f55\u5e94\u7528\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u81ea\u52a8\u5316\u7cfb\u7edf \u7cfb\u7edf\u90e8\u7f72\u6b65\u9aa4 1. \u73af\u5883\u51c6\u5907 2. \u7cfb\u7edf\u5b89\u88c5 \u57fa\u7840\u6570\u636e\u5f55\u5165 1. \u5f55\u5165\u4e2d\u533b\u75c7\u72b6\u6570\u636e 2. \u5f55\u5165\u4e2d\u533b\u8bc1\u578b\u6570\u636e 3. \u5efa\u7acb\u75c7\u72b6\u4e0e\u8bc1\u578b\u5173\u8054 4. \u6dfb\u52a0\u6cbb\u7597\u65b9\u6848 \u5b9e\u9645\u5e94\u7528\u573a\u666f 1. \u95e8\u8bca\u8bca\u65ad\u6d41\u7a0b 2. \u60a3\u8005\u5386\u53f2\u67e5\u8be2 \u7cfb\u7edf\u4f18\u5316\u5efa\u8bae \u6ce8\u610f\u4e8b\u9879 \u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u60a8\u53ef\u4ee5\u90e8\u7f72\u548c\u5e94\u7528\u8fd9\u4e2a\u4e2d\u533b\u8fa9\u8bc1\u8bba\u6cbb\u81ea\u52a8\u5316\u7cfb\u7edf\uff0c\u8f85\u52a9\u4e2d\u533b\u4e34\u5e8a\u8bca\u65ad\u548c\u6cbb\u7597\u65b9\u6848\u5236\u5b9a\u3002\u7cfb\u7edf\u6838\u5fc3\u4ef7\u503c\u5728\u4e8e\u6807\u51c6\u5316\u4e2d\u533b\u8fa9\u8bc1\u6d41\u7a0b\u548c\u63d0\u9ad8\u8bca\u65ad\u6548\u7387\uff0c\u4f46\u6700\u7ec8\u51b3\u7b56\u4ecd\u9700\u4f9d\u8d56\u533b\u5e08\u7684\u4e13\u4e1a\u5224\u65ad\u3002 Certainly! Let me explain the linkSymptomToSyndrome() method and these specific examples in detail. Understanding linkSymptomToSyndrome() This method establishes a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-607","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/posts\/607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/comments?post=607"}],"version-history":[{"count":6,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/posts\/607\/revisions"}],"predecessor-version":[{"id":613,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/posts\/607\/revisions\/613"}],"wp:attachment":[{"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/media?parent=607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/categories?post=607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/easyaccsoft.com\/webdesign\/wp-json\/wp\/v2\/tags?post=607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}