👥 病人資料 Excel 匯入系統

從 Excel 檔案匯入病人資料至 patient_record 資料表

📊 資料庫狀態

{{ databaseStatus.total_records }}
總記錄數
{{ databaseStatus.records_with_patient_id }}
有病人編號
{{ databaseStatus.unique_patient_ids }}
唯一病人編號
{{ databaseStatus.table_exists ? '✅' : '❌' }}
資料表狀態

📋 匯入說明

1
選擇 Excel 檔案
支援 .xlsx 和 .xls 格式
2
預覽資料
檢查欄位對應和重複記錄
3
確認匯入
執行資料匯入並查看結果
必要欄位:
• 病人編號 (patient_id)
• 中文姓名 (chinese_name)
可選欄位:
• 英文姓名、出生日期、性別
• 電話#1、電話#2、住址、電郵地址
• 血型、G6PD、懷孕、懷孕次數
• 收費類別、途徑、備註、新增病人紀錄日期
⚠️ 重複處理:已存在相同病人編號的記錄將會被跳過

📤 選擇 Excel 檔案

👥
拖拽 Excel 檔案到此處或
支援 .xlsx 和 .xls 格式,最大 50MB
📄
{{ selectedFile.name }}
{{ formatFileSize(selectedFile.size) }}

{{ validationErrors.file }}

👁️ 資料預覽

{{ previewResults.success ? '✅ 預覽成功' : '❌ 預覽失敗' }}
{{ previewResults.row_count }}
總記錄數
{{ previewResults.new_records_count }}
新記錄
{{ previewResults.existing_records_count }}
重複記錄
{{ previewResults.columns.length }}
欄位數

⚠️ 缺少必要欄位

缺少欄位:{{ previewResults.missing_columns.join(', ') }}
請確認 Excel 檔案包含所有必要欄位,否則匯入可能失敗。

🗂️ 欄位對應

Excel 欄位
{{ col }} → {{ previewResults.column_mapping[col] }}
... 還有 {{ previewResults.columns.length - 8 }} 個欄位
對應資料庫欄位
{{ dbCol }} ← {{ excelCol }}

📋 資料範例 (前10筆)

{{ col }}
{{ row[col] || '' }}

📋 匯入摘要

檔案總記錄數: {{ previewResults.row_count }} 筆
已存在記錄: {{ previewResults.existing_records_count }} 筆 (將跳過)
將匯入新記錄: {{ previewResults.new_records_count }} 筆
⚠️ 所有記錄都已存在,無需匯入

📋 待匯入記錄預覽 (前 {{ Math.min(previewResults.new_records_preview.length, 20) }} 筆)

{{ column }}
{{ record[column] || '-' }}
... 還有 {{ previewResults.new_records_count - 20 }} 筆記錄將被匯入

⚠️ 重複記錄預覽 (前 {{ Math.min(previewResults.existing_records_preview.length, 10) }} 筆) - 將跳過

{{ column }}
{{ record[column] || '-' }}
... 還有 {{ previewResults.existing_records_count - 10 }} 筆重複記錄將被跳過

📊 匯入進度

{{ importProgress.message }} {{ importProgress.percentage }}%

📋 匯入結果

{{ importResults.success ? '✅ 匯入成功' : '❌ 匯入失敗' }}
{{ importResults.records_processed }}
處理記錄
{{ importResults.records_inserted }}
成功匯入
{{ importResults.records_skipped }}
跳過記錄
{{ importResults.errors.length }}
錯誤數量
{{ importResults.message }}

⏭️ 跳過的病人編號

{{ patientId }}
還有 {{ importResults.records_skipped - importResults.skipped_patient_ids.length }} 個記錄被跳過...

❌ 錯誤訊息

• {{ error }}
← 返回首頁