📋 Data Model & Field Mapping (คลิกเพื่อดูรายละเอียดการอ่านไฟล์ต้นทาง)
ไฟล์ต้นทาง: ระยะเวลาการส่งข้อมูลผู้ป่วยในแยกรายเดือนที่ส่งข้อมูล (IP01,IP02).xlsx | Sheet: Sheet1 | ระดับข้อมูล: สรุปรายเดือน (Monthly Aggregate) — ไม่มีข้อมูลระดับรายเคส (HN/AN)
| คอลัมน์จริงในไฟล์ Excel | Mapping ใช้ในระบบ |
| เดือนที่ส่ง | รหัสเดือน (พ.ศ.-เดือน) → ใช้คำนวณ เดือน / ปี / ไตรมาส / ปีงบประมาณ |
| ภายใน30วัน(ครั้ง) / ภายใน30วัน(AdjRW) | กลุ่ม ≤30 วัน — จำนวนครั้ง / AdjRW |
| 31-60วัน(ครั้ง) / 31-60วัน(AdjRW) | กลุ่ม 31–60 วัน — จำนวนครั้ง / AdjRW |
| 61-90วัน(ครั้ง) / 61-90วัน(AdjRW) | กลุ่ม 61–90 วัน — จำนวนครั้ง / AdjRW |
| มากกว่า90วัน(ครั้ง) / มากกว่า90วัน(AdjRW) | กลุ่ม >90 วัน — จำนวนครั้ง / AdjRW |
| รวม (ครั้ง) / รวม (AdjRW) | ผลรวมทั้งหมดต่อเดือน (ใช้ตรวจสอบ Data Validation) |
หมายเหตุขอบเขตข้อมูล: ไฟล์ต้นฉบับไม่มีคอลัมน์แยกประเภท IP01/IP02, หน่วยบริการ, สิทธิการรักษา, กลุ่มผู้ป่วย หรือระดับรายเคส (HN/AN, วันที่จำหน่าย) ระบบจึงไม่แสดงตัวกรอง/กราฟ/ตารางที่ต้องใช้ข้อมูลเหล่านี้ และจะไม่สมมติค่าเหล่านั้นขึ้นเอง — หากมีการเพิ่มคอลัมน์ดังกล่าวในไฟล์ต้นทางในอนาคต ระบบสามารถเปิดใช้งานส่วนเหล่านี้ได้โดยไม่ต้องแก้โครงสร้างหลัก
ใช้การกรอกอีเมลด้วยตนเองแทน
🔑 จัดการสิทธิ์ผู้ใช้ (เฉพาะผู้ดูแลระบบ)
เพิ่ม/ลบ Gmail ที่อนุญาตให้นำเข้าข้อมูลได้ — การเปลี่ยนแปลงจะถูกบันทึกลง Repo บน GitHub (ไฟล์ approved-emails.json) ผ่าน GitHub API และมีผลกับทุกคนที่เปิด Dashboard นี้โดยอัตโนมัติ (ใช้เวลาประมาณ 1 นาทีให้เว็บไซต์ Build ใหม่)
ต้องใช้ GitHub Personal Access Token (แนะนำสร้างแบบ Fine-grained จำกัดสิทธิ์เฉพาะ Repo นี้ ให้สิทธิ์ Contents: Read and write เท่านั้น และตั้งวันหมดอายุสั้นๆ) — Token จะถูกเก็บไว้ในหน่วยความจำของเบราว์เซอร์นี้เท่านั้นระหว่างที่ใช้งาน ไม่ถูกบันทึกลงไฟล์หรือส่งไปที่ใดนอกจาก GitHub API โดยตรง
🗑️ ลบข้อมูลปีงบประมาณ (ป้องกันข้อมูลสะสมมากเกินไป)
เลือกปีงบประมาณที่ต้องการลบทิ้งทั้งหมด (ใช้ GitHub Token ช่องด้านบน) — การลบมีผลถาวรกับทุกคนที่เปิด Dashboard นี้ และไม่สามารถกู้คืนได้ ควร Export ข้อมูลปีนั้นเก็บไว้ก่อน หากยังต้องใช้อ้างอิงในอนาคต
ตัวกรองทั้งหมดเลือกได้หลายค่า (Multi-select) และมีผลกับ KPI / กราฟ / Insight / ตารางทั้งหมดพร้อมกันทันที — ตัวกรอง "ช่วงระยะเวลา" และ "สถานะ" มีผลกับตารางรายละเอียดตามช่วงเวลา (Row 7) และแถบสรุปช่วงที่เลือก
KPI สรุปภาพรวม อัปเดตตาม Filter
📈 แนวโน้มการส่งข้อมูลผู้ป่วยในภายใน 30 วัน
Monthly Timeliness Trend — % ส่งภายใน 30 วันต่อเดือน เทียบเป้าหมาย 100% (คลิกจุดบนกราฟเพื่อ Drill-down รายเดือน)
👉 เลื่อนซ้าย-ขวาเพื่อดูทุกเดือน
🚩 เดือนที่มีสัดส่วนส่งล่าช้าสูงสุด
Ranking — % ส่งเกิน 30 วัน เรียงจากมากไปน้อย (ไฮไลต์ Top 3)
📊 โครงสร้างระยะเวลาการส่งข้อมูลรายเดือน
100% Stacked Column — สัดส่วนแต่ละช่วงเวลาต่อเดือน (ดูว่าเคสย้ายไปกลุ่มใดเมื่อ Performance ลดลง)
👉 เลื่อนซ้าย-ขวาเพื่อดูทุกเดือน
⚖️ เปรียบเทียบสัดส่วนจำนวนครั้งและ AdjRW ตามระยะเวลาการส่ง
% จำนวนครั้ง เทียบ % AdjRW ในแต่ละช่วงเวลา (ข้อมูลตามตัวกรองปัจจุบัน)
Executive Insight คำนวณอัตโนมัติจากข้อมูลที่กรอง
🧠 ข้อสรุปเชิงบริหาร (Executive Insight)
รายละเอียดตามช่วงเวลาการส่ง ตอบสนองตัวกรองช่วงเวลา/สถานะ
ตารางรายละเอียดรายเดือน Sort / Search / Export
🛡️ เคสเสี่ยงเกิน 30 วัน — 30-Day Early Warning
ไฟล์ต้นทางเป็นข้อมูลสรุปรายเดือน ไม่มีข้อมูลระดับรายเคส (HN/AN, วันที่จำหน่าย) จึงไม่สามารถคำนวณ "จำนวนวันค้าง" รายเคสได้จริง
ระบบจึงแสดง สถานะเฝ้าระวังเชิงพอร์ตโฟลิโอ จากข้อมูลเดือนล่าสุดแทน (จำนวน/AdjRW ที่อยู่ในกลุ่มอายุ 31–60 / 61–90 / >90 วัน ของเดือนล่าสุดตามตัวกรอง)
— หากไฟล์ต้นทางมีคอลัมน์ HN/AN และวันที่จำหน่ายในอนาคต ระบบสามารถอัปเกรดเป็นตารางรายเคสพร้อมสถานะ 0-20 / 21-25 / 26-29 / ≥30 วันได้ทันที