Feature Overview
CareFlow – เวอร์ชัน 1.5.0
v1.5.0OPD FlowDrug & ServicePayment & DocumentSecurity & PermissionsDispensing
Version 1.5.0
20 ม.ค. 2569 - ล่าสุด💊 Remed ยาปรับปรุงใหม่
- Remed ยาตัด Stock อัตโนมัติทันทีที่บันทึก
- ใช้จำนวนจากประวัติล่าสุดแทน default 1
- แสดงคอลัมน์จำนวนในตารางยารวม
- แจ้งเตือนสถานะการตัด Stock สำเร็จ/ไม่สำเร็จ
- รองรับกรณี Stock ไม่เพียงพอ
📦 Stock Management
- ตัด Stock เมื่อยืนยันการจ่ายยา (confirmDispensing)
- รองรับยาที่ไม่มี item_type (null/undefined = ถือว่าเป็นยา)
- แก้ไขจำนวนยาปรับ Stock ถูกต้อง
- เก็บจำนวนเดิม (originalQty) ก่อนแก้ไขเพื่อคำนวณส่วนต่าง
- Stock-out เมื่อเพิ่มจำนวน, Stock-in เมื่อลดจำนวน
✅ Table Selection Fix
- ใช้ unique key (cn_guid) แทน icode ในตารางยา
- เลือกรายการยาได้ถูกต้องแม้มียาชื่อเดียวกันหลายรายการ
- Index-based key สำหรับตารางยารวม (EmrAllDrugs)
- ป้องกันการเลือก checkbox ผิดรายการ
🖼️ รูปภาพบัตรประชาชน
- แสดงรูปจากบัตรประชาชนในหน้าลงทะเบียน
- บันทึกรูปบัตรประชาชนลงฐานข้อมูล (card_photo)
- แสดงรูปบัตรประชาชนในหน้าข้อมูลผู้ป่วย (PatientCpn)
- รองรับรูปแบบ base64 JPEG
Version 1.4.0
ก่อนหน้า💊 ระบบจ่ายยา (Dispensing)
- หน้าจ่ายยาแยกสำหรับเจ้าหน้าที่จ่ายยา
- แสดงรายการรอจ่ายยา (หมอยืนยันแล้ว แต่ยังไม่จ่าย)
- แสดงรายการจ่ายยาแล้ว พร้อมข้อมูลผู้จ่ายและเวลาจ่าย
- แสดงสถานะการชำระเงินในแต่ละรายการ
- ยืนยัน/ยกเลิกการจ่ายยาได้
- Auto refresh ทุก 30 วินาที
- แสดงรายละเอียดยาใน Modal พร้อมยอดรวม
📝 Template อาการและแผนการรักษา
- สร้าง template สำหรับอาการและแผนการรักษา
- บันทึก template พร้อมตั้งชื่อ
- เลือกใช้ template ได้จาก Modal
- ลบ template ที่ไม่ใช้แล้ว
- Template ใช้ร่วมกันระหว่างหน้า "ซักประวัติ" และ "ตรวจรักษา"
- เก็บ template ใน localStorage
📋 การจัดการข้อมูล CC
- เปลี่ยน cc field จาก VARCHAR(255) เป็น TEXT
- รองรับการบันทึกอาการและแผนการรักษาได้มากกว่า 255 ตัวอักษร
- แยกการบันทึก cc ระหว่าง opdscreen และ ovst
- หน้า "ซักประวัติ" และ "ตรวจรักษา" บันทึกเฉพาะ opdscreen.cc
- หน้า "ส่งตรวจ" บันทึกเฉพาะ ovst.cc
- ดึงข้อมูล cc จาก opdscreen ก่อน ถ้าไม่มีค่อยใช้จาก ovst
💰 สถานะการชำระเงิน
- แสดงสถานะการชำระเงินในหน้า "จ่ายยา"
- แสดงสถานะยืนยันจ่ายยาในหน้า "ชำระเงิน"
- Chip สีตามสถานะ: ชำระแล้ว (เขียว), รอชำระ (เหลือง), ยกเลิก (แดง)
- ดึงสถานะการชำระเงินล่าสุดจาก payment table
🎨 UI Improvements
- ปรับแสดงวันที่เป็น พ.ศ. ในหน้า "จ่ายยา"
- แสดงเฉพาะชื่อ template ใน Modal (ไม่แสดงตัวอย่างข้อความ)
- ปรับ layout template card ให้สวยงามขึ้น
- แสดงวันที่สร้าง template ในบรรทัดใหม่
Version 1.3.0
ก่อนหน้า🔐 ระบบสิทธิ์เมนู (Menu Permissions)
- กำหนดสิทธิ์การเข้าถึงเมนูให้กับผู้ใช้งานแต่ละคน
- รองรับ 9 เมนูหลัก: ลงทะเบียน, ส่งตรวจ, ซักประวัติ, ตรวจรักษา, ชำระเงิน, คลังยา, ตั้งค่า, รายงาน, รายการนัด
- Modal กำหนดสิทธิ์เมนูพร้อมปุ่มเลือกทั้งหมด/ยกเลิกทั้งหมด
- แสดงสิทธิ์ที่สามารถเข้าถึงในตารางผู้ใช้งาน
- ซ่อนเมนูที่ผู้ใช้ไม่มีสิทธิ์เข้าถึงใน Header (Desktop & Mobile)
🛡️ การป้องกันการเข้าถึง (Access Control)
- ตรวจสอบสิทธิ์การเข้าถึงหน้าเมื่อเปลี่ยน route
- Redirect ไปหน้าแรก (/dash) ถ้าไม่มีสิทธิ์เข้าถึง
- ป้องกันการเข้าถึงผ่าน URL โดยตรง
- เก็บ menu_permissions ใน JWT token สำหรับการตรวจสอบแบบ real-time
📋 Dashboard Improvements
- เพิ่มส่วนลด (Discount) ใน Dashboard summary
- แสดงยอดทั้งหมดก่อนหักส่วนลดและรายได้หลังหักส่วนลด
- เพิ่มตารางยาใกล้หมดสต็อกและยาใกล้หมดอายุ
- ปรับกราฟภาพรวมการมาใช้บริการเป็น 7 วัน (แสดงชื่อวัน)
- กรองตารางผู้มาใช้บริการเป็นรายการวันนี้เท่านั้น (1 VN = 1 รายการ)
🏥 PHR MOPH Integration
- เปลี่ยนปุ่ม PHR เป็น PHR MOPH
- รองรับการเชื่อมต่อกับระบบ MOPH
📝 Diag Text มาตรฐาน
- Template การวินิจฉัยโรคมาตรฐานจาก ICD-Doctor-Codemap
- ค้นหา template มาตรฐานด้วยคำค้นหา
- เลือก template มาตรฐานเพื่อเติม diag_text และ ICD-10 code อัตโนมัติ
- บันทึก diag text เป็น template ของคลินิก
- เลือก template ที่บันทึกไว้เพื่อใช้ซ้ำ
Version 1.2.0
ก่อนหน้า💊 Usage Builder Enhanced
- แยกฟิลด์บันทึก: usesage (กรอกเอง) และ usesage_builder (จากตัวเลือก)
- เลือกช่วงเวลาได้หลายตัว (เช้า, กลางวัน, เย็น, ก่อนนอน)
- ดึงข้อมูล usesage_builder จาก Inventory มาแสดงใน DrugCpn
- Default mode เป็น "กรอกเอง" เมื่อเปิด modal
- แสดงผลลัพธ์จากตัวเลือกแยกต่างหาก
📋 ข้อมูลยาละเอียดขึ้น
- แยกช่อง "ข้อบ่งใช้" และ "ข้อแนะนำ/ข้อควรระวัง" ออกจากกัน
- เลือกกลุ่มยาแพ้จาก allergy_group แทนชื่อสามัญ
- รองรับหลายกลุ่มยาแพ้ต่อ 1 รายการยา
- ตรวจสอบการแพ้ยาแม่นยำขึ้น
💰 ส่วนลดรายการยา
- เพิ่มช่องใส่ส่วนลดแต่ละรายการยา/ค่ารักษา
- คำนวณราคารวมหักส่วนลดอัตโนมัติ
- แสดงส่วนลดในตารางรายการ
- แก้ไขส่วนลดได้โดยตรงในตาราง (Inline Edit)
- กด Enter เพื่อบันทึก, Escape เพื่อยกเลิก
🎨 UI/UX Improvements
- ปรับ layout ฟอร์มจ่ายยาเป็น flex column
- แยกช่อง "วิธีการใช้ยา" เป็น row ใหม่
- ปรับความกว้างช่องจำนวน (w-20 → w-28)
- เปลี่ยน icon ปุ่มเพิ่ม (plus-circle)
- ปรับข้อความปุ่ม: "พิมพ์สติ๊กเกอร์", "Remed"
- ปรับ layout Modal ตั้งค่าวิธีการใช้ยาให้เหมือน Inventory
- ปรับดีไซน์ตารางรายการยา: gradient header, badges, icon buttons
Version 1.1.0
18 ธ.ค. 2025📋 ระบบใบส่งตัว (Referral)
- เพิ่มระบบใบส่งตัว (Referral) ครบวงจร: เพิ่ม/แก้ไข/ลบ
- เลขที่ใบส่งตัวอัตโนมัติ (refer_no)
- แสดงข้อมูลผู้ป่วยครบถ้วน
- พิมพ์ใบส่งตัว PDF ขนาด A4
- แยกแท็บใน EMR แพทย์/พยาบาล
🩺 Physical Exam ใหม่
- แยก Tab การตรวจร่างกาย (Physical Exam) เป็น Component ใหม่
- รองรับหัวข้อย่อย: GA, HEENT, Heart, Chest, Abdomen, PV, PR, Genitalia, Neuro, Extremities
- Template การตรวจร่างกายแต่ละหัวข้อ
- Template รวมทั้งหมด
- ปุ่ม "ปกติทั้งหมด" สำหรับ set ทุกหัวข้อเป็น Normal
- ปุ่มบันทึก sticky อยู่ด้านล่างเสมอ
💉 BP History
- บันทึกค่าความดันหลายครั้ง (BP History)
- คำนวณค่าเฉลี่ยอัตโนมัติ
- Modal กรอก BP แยก
- ตาราง/ปุ่มลบ และนำค่าเฉลี่ยไปใช้
- Sync อาการสำคัญ (CC) จากซักประวัติไป ovst อัตโนมัติ
💳 PromptPay Integration
- ตั้งค่า PromptPay ในหน้าตั้งค่าคลินิก
- เลขพร้อมเพย์ และชื่อบัญชี
- หน้าชำระเงินรองรับ PromptPay QR
- QR ทั้งแบบไม่กำหนดยอดและกำหนดยอด
✅ ยืนยันการตรวจ
- สถานะยืนยันการตรวจโดยแพทย์ (doctor_confirmed)
- บันทึกเวลายืนยัน (doctor_confirm_time)
- Confirm dialog ก่อนยืนยัน
- ปุ่มยืนยันอยู่ที่ PatientCpn header banner
💊 Usage Builder
- ระบบสร้างวิธีใช้ยาแบบมีโครงสร้าง (Usage Builder)
- รองรับ free/builder mode
- เพิ่มฟิลด์: ชื่อสามัญ, ชื่อการค้า, ข้อบ่งใช้
- รองรับวิธีใช้ยาหลายรูปแบบ: ก่อนอาหาร, หลังอาหาร, ก่อนนอน, เมื่อมีอาการ
🔧 Bug Fixes (วันนี้)
- แก้ไข syntax error ใน Select ช่วงเวลา (@const → const)
- แก้ไขการ reset usageMode และ usageBuilder เมื่อปิด modal
- เพิ่ม migration สำหรับฟิลด์ usesage_builder ในฐานข้อมูล
🔧 Bug Fixes (17-18 ธ.ค. 2025)
- แก้ไขสี text ไม่ให้เปลี่ยนตาม Dark Mode ใน TransactionHistory และ Drug Inventory modals
- แก้ไข Input วันหมดอายุให้พิมพ์ได้ (เพิ่ม state แยกสำหรับ display value)
- แก้ไขการอัปโหลดรูปภาพยา - ส่ง FormData เมื่อมีรูปใหม่, JSON เมื่อไม่มีรูป
- แก้ไขการแสดงรูปภาพยาเมื่อแก้ไข - สร้าง URL จาก server สำหรับ preview
- แก้ไขชื่อไฟล์รูปภาพใน Database - ใช้ชื่อไฟล์จริงจาก multer
- เปลี่ยน placeholder bps/bpd เป็น SBP/DBP (คำทางการแพทย์)
- แก้ไขการสะกด "ดื่มแอลกอฮอร์" → "ดื่มแอลกอฮอล์"
Version 1.0.0
Base FeaturesOPD Flow & Queue
- ลงทะเบียนผู้ป่วยใหม่ / ผู้ป่วยเก่า (HN เดิม)
- อ่านบัตรประชาชนผ่านเครื่องอ่าน Smart Card (Thai ID Card) เพื่อเติมข้อมูลอัตโนมัติ
- คิวส่งตรวจ OPD: ส่งไปห้องซักประวัติ / ห้องตรวจ
- หน้าพยาบาลซักประวัติ (ชีพจร, BP, น้ำหนัก, ส่วนสูง, BMI)
- เชื่อมอาการส่งตรวจ (CC) จาก ovst และแก้ไขได้ทั้งพยาบาล/แพทย์
- สถานะคิว: รอซักประวัติ, ซักประวัติเสร็จ, ตรวจแล้ว
EMR ในห้องตรวจ
- บันทึกการตรวจร่างกาย, Diagnosis, Plan การรักษา
- สั่งยาและรายการค่ารักษาในแท็บเดียวกัน
- Remed ยาจากประวัติเดิม พร้อมกันหลายรายการ
- บันทึกนัดครั้งถัดไป (Appointment) และพิมพ์ใบนัด A5
คลังยา & รายการค่ารักษา
- แยกเมนูรายการยา และเมนูรายการค่ารักษา (service)
- แยกตารางข้อมูลระหว่างยา (drug) กับค่ารักษา (service) เพื่อจัดการได้ชัดเจน
- สต็อกยาจริงจาก drugitems.stock และประวัติ stock_movement
- แจ้งเตือนยาหมด / ใกล้หมด และมูลค่าสินค้าคงคลัง
- รองรับ thermal label 50x100 mm สำหรับสติ๊กเกอร์ยา
การสั่งยา & สติ๊กเกอร์ยา
- สั่งยาแบบครั้งเดียว หรือ Remed จากประวัติเดิม
- ป้องกันกดบันทึกซ้ำด้วยปุ่มโหลด (loading state)
- ตรวจสอบสต็อกก่อนจ่าย: ถ้า stock ไม่พอ จะไม่ให้จ่าย
- พิมพ์สติ๊กเกอร์ยาพร้อมกันหลายรายการ (เลือกจากตาราง)
- สติ๊กเกอร์ยา: ชื่อคลินิก, ชื่อยา, จำนวน, วิธีใช้, วันที่จ่ายยา
ชำระเงิน & ใบเสร็จ
- ดึงรายการจาก opitems ตาม VN เพื่อคิดเงิน
- รองรับส่วนลด, ยอดรวม, เงินรับมา, เงินทอน
- ชำระด้วย เงินสด / โอน / บัตรเครดิต
- ออกใบเสร็จเป็น PDF (A5) และเปิดดู/พิมพ์ใน Modal
- ประวัติชำระเงิน พร้อมปุ่มพิมพ์ใบเสร็จย้อนหลัง
- ยกเลิกการชำระเงิน พร้อมจัดการสถานะใน payment / payment_detail
เอกสารทางการแพทย์
- ใบรับรองแพทย์ (Medical Certificate) พร้อมตัวอย่างก่อนพิมพ์
- ใบนัด (Appointment) พิมพ์แบบฟอร์มขนาด A5
- Template Lab / X-ray item และ Lab Template
Security & Cloud
- JWT Authentication สำหรับทุก API สำคัญ
- ป้องกัน jwt-decode error เมื่อ token ไม่สมบูรณ์
- รองรับการใช้งานแบบ Cloud (BASE_URL แยก config ได้)
- สำรองข้อมูลฐาน MySQL ได้ตามมาตรฐาน
Experience เพิ่มเติม
- อัปโหลดรูปจากมือถือเข้าระบบ (เชื่อม API upload)
- หน้า Promo (landing page) สำหรับโปรโมทระบบ
- UI แนว glassmorphism ในหลายหน้า (เช่น คลังยา)
- รองรับคลินิกหลายสาขาด้วย clinic_code
