คู่มือระบบ สงขลาเฮลท์แคร์

ฟังก์ชันทั้งหมดที่เปิดใช้จริง พร้อมภาพหน้าจอจากคลินิกทดลองสาธารณะและแผนภาพ · สลับเป็นภาษาอังกฤษได้ที่มุมบนขวา


ขั้นตอนการทำงานหลัก Core workflow

ลงทะเบียนHN + PDPA + OTPคิว/นัดหมายA01… · ปฏิทินตรวจรักษาICD-10-TM · ชาร์ตฟันสั่งแล็บ/ยาCPOE + TMTจ่ายยาตัดสต็อก · ล็อตออกบิลพร้อมเพย์/บัตร/คอร์สเคลม/e-Taxสปสช. · สปส. · 30 บาทคู่ขนาน: เตือนนัด LINE → SMS → อีเมล · เทเลเมด P2P · IPD · NCD · แพ็กทันตกรรม / ความงาม · FHIR / Health Link / 43 แฟ้ม

เริ่มต้นใช้งาน Getting started

เปิดใช้คลินิกด้วยตนเอง Self-serve clinic signup

คลินิกสมัครใช้งานเองในขั้นตอนเดียว: ตั้งรหัสคลินิก เลือกสาขาการแพทย์ และสร้างบัญชีผู้ดูแล ระบบจัดเตรียมฐานข้อมูลแยกของคลินิก (database-per-tenant) โดยอัตโนมัติ ช่วงเปิดตัวฟรีค่าบริการ 6 เดือนแรก ไม่ต้องใช้บัตรเครดิต

  • เลือกสาขาการแพทย์ (เวชกรรมทั่วไป / กุมารฯ / ผิวหนัง–ความงาม / ทันตกรรม / สูตินรีเวช) — กำหนดขั้นตอนงาน ฟิลด์ตรวจ แท็บ และหน้าจอของคลินิก
  • จำกัดอัตราสมัครต่อ IP (กัน abuse)
  • ฐานข้อมูลแยกรายคลินิก + ลงทะเบียนใน tenant registry
  • ดูราคาและฟังก์ชันทั้งหมดได้ที่ /pricing และ /features

POST /api/signupGET /api/config/specialties

เปิดใช้คลินิกด้วยตนเอง

เข้าสู่ระบบ Staff sign-in

บุคลากรเข้าสู่ระบบด้วยชื่อผู้ใช้ + รหัสผ่าน (ระบบหาคลินิกให้เอง ถามรหัสคลินิกเฉพาะกรณีชื่อซ้ำหลายคลินิก) ออกคุกกี้ httpOnly (โทเคนไม่ถูกอ่านจาก JavaScript) จำกัดการเดารหัสผ่าน 5 ครั้ง/15 นาที และรองรับ MFA 6 หลัก

  • บทบาท: แพทย์ / พยาบาล / เวชระเบียน (frontdesk) / ผู้ดูแล — สิทธิ์ต่างกันทุกจุด และบังคับที่เซิร์ฟเวอร์
  • สังกัดสาขา (multi-branch) ติดมากับเซสชัน
  • เข้าด้วย Google / Apple ได้เมื่อคลินิกเปิดใช้ (ตั้งค่าใน .env)
  • บัญชีทดลองสาธารณะ 3 คลินิก (เวชกรรม / ทันตกรรม / ความงาม) แสดงใต้กล่องเข้าสู่ระบบ

POST /api/auth/loginPOST /api/auth/logoutGET /api/auth/meGET /api/auth/social/config

เข้าสู่ระบบ

แดชบอร์ดคลินิก Clinic dashboard

หน้าแรกหลังเข้าสู่ระบบ: ตัวเลขวันนี้ (ผู้ป่วย รายรับ คิว) คิวตรวจย่อ ผลผิดปกติที่ยังไม่รับทราบ และสถิติคลินิกแบบเต็ม — กราฟเส้นรายรับ/ผู้ป่วยใหม่ กราฟวงกลมกรุ๊ปเลือด/สถานะบิล ตารางสรุป เลือกช่วง วันนี้ / สัปดาห์ / เดือน / ปี

  • ทางลัดงานประจำเรียงตามสาขาการแพทย์ของคลินิก (Process Categorization)
  • เมนูข้างซ้ายครบทุกหน้า (จอแคบย่อเป็นแถบบน) · สลับภาษาไทย/EN มุมบนขวา จำค่าต่อเครื่อง
  • ข้อมูลสรุปเท่านั้น ไม่มีรายละเอียดผู้ป่วยรายคน

GET /api/analytics/dashboardGET /api/config

แดชบอร์ดคลินิก

ผู้ป่วยนอก (OPD) Outpatient

ลงทะเบียนผู้ป่วย + ความยินยอม PDPA Patient registration + PDPA consent

ออก HN อัตโนมัติ (ปี พ.ศ.) ตรวจเช็คซัมเลขบัตรประชาชน 13 หลัก และเก็บแบบเข้ารหัสระดับฟิลด์ — แสดงผลเป็นแบบปกปิดเท่านั้น ความยินยอมการตลาด/ภาพถ่ายแยกจากการรักษาและเพิกถอนได้

  • เข้ารหัสเลขบัตร (Fernet) · mask เช่น 1-xxxx-xxxxx-70-8
  • ประวัติความยินยอมแบบ append-only
  • นำเข้าผู้ป่วยเก่าจาก SSB/iMed ด้วย CSV · อ่านบัตรประชาชนผ่านเครื่องอ่าน (ตั้งค่าได้)

POST /api/patientsPOST /api/consentsPOST /api/import/patients

ลงทะเบียนผู้ป่วย + ความยินยอม PDPA

ทะเบียนผู้ป่วยทั้งหมด Patient register

รายชื่อผู้ป่วยทุกคนของคลินิก ค้นหาได้ แบ่งหน้า พร้อมข้อมูลประชากรครบถ้วน แก้ไขในหน้าเดียวกัน (ที่อยู่ เบอร์ อีเมล สิทธิการรักษา ผู้ติดต่อฉุกเฉิน ฯลฯ)

  • ตัวกรอง + แถบแบ่งหน้าแบบเดียวกับทุกหน้ารายการในระบบ
  • การแก้ไขทุกครั้งถูกบันทึกลง audit log

GET /api/patients/allGET /api/patients?q=PUT /api/patients/{hn}

ทะเบียนผู้ป่วยทั้งหมด

ยืนยันเบอร์โทร / อีเมลผู้ป่วยด้วย OTP Patient phone/email OTP verification

ส่งรหัส 6 หลักไปยังเบอร์โทร (SMS) หรืออีเมลของผู้ป่วย เมื่อกรอกถูกระบบติดเครื่องหมาย 'ยืนยันแล้ว' ที่เวชระเบียน — ทำให้การเตือนนัดทาง SMS/อีเมลไปถึงคนที่ถูกต้อง

  • รหัสถูกแฮช (HMAC) ไม่เก็บและไม่ส่งกลับเป็นข้อความธรรมดา · หมดอายุ 10 นาที · ผิดได้ 5 ครั้ง
  • จำกัด 5 คำขอ/ชั่วโมงต่อปลายทาง (กันสแปม SMS)
  • ยังไม่ตั้งค่า SMS/อีเมล → ระบบตอบตามจริงว่ายังไม่ได้ส่ง (ไม่หลอกว่าส่งแล้ว)

POST /api/verify/requestPOST /api/verify/check

ยืนยันเบอร์โทร / อีเมลผู้ป่วยด้วย OTP

คิวตรวจรายวัน Daily queue

คิว A01, A02… ตามวันของคลินิก (เวลาไทย) สถานะ รอตรวจ → กำลังตรวจ → เสร็จสิ้น รีเฟรชอัตโนมัติทุก 10 วินาที และกรองตามสาขาของผู้ใช้

  • พนักงานประจำสาขาเห็นคิวสาขาตน + คิวกลาง
  • กดชื่อผู้ป่วยเพื่อเปิดเวชระเบียน

POST /api/queueGET /api/queue/todayPOST /api/queue/{id}/status

คิวตรวจรายวัน

เวชระเบียน + บันทึกการตรวจ Patient record & visit notes

แผงข้อมูลเรียงตามสาขาการแพทย์: ป้ายผู้ป่วย (เห็นตัวตนเสมอ) แท็บ ตรวจวันนี้ / ข้อมูลผู้ป่วย / ประวัติ / ผลแล็บ–เอกซเรย์ และแท็บเฉพาะทาง 'ชาร์ตฟัน' (ทันตกรรม) หรือ 'ความงาม' (ผิวหนัง–ความงาม) ฟอร์มตรวจพร้อมฟิลด์เฉพาะสาขา วินิจฉัย ICD-10-TM สั่งยา TMT

  • กติกาต่อสาขา (Processing Logic) บังคับฝั่งเซิร์ฟเวอร์
  • วินิจฉัยหลัก 1 รายการเสมอ · แพทย์เท่านั้นที่บันทึกได้
  • ปุ่มเริ่มวิดีโอคอล (เทเลเมด) และออกบิลต่อครั้งตรวจ

POST /api/visitsGET /api/visits/by-patient/{hn}GET /api/icd10GET /api/tmt

เวชระเบียน + บันทึกการตรวจ

เวชระเบียนเชิงลึก Chart depth

ประวัติแพ้ยา/แพ้อาหาร สัญญาณชีพ วัคซีน บันทึกช่วยจำ (ครอบครัว/สังคม) และเอกสารแนบ (PDF/ภาพ ≤10MB) รวมอยู่ในหน้าเวชระเบียนเดียว พร้อมแม่แบบบันทึกและวิธีใช้ยา (sig) สำเร็จรูป

  • การแพ้แสดงเป็นป้ายเตือนถาวรบนเวชระเบียน
  • การเปิดดูเวชระเบียนทุกครั้งถูกบันทึก (access log ต่อผู้ป่วย)
  • แม่แบบบันทึก + sig ลดเวลาเขียนของแพทย์

GET/POST /api/chart/{hn}/allergies|vitals|immunizations|memosPOST /api/documents/{hn}GET /api/templates/notesGET /api/templates/sigs

เวชระเบียนเชิงลึก

ความปลอดภัยการสั่งยา Prescription safety

ระบบตรวจแพ้ยา (เทียบชื่อยา TMT กับประวัติแพ้) และยาตีกัน (คู่ยาอันตราย) ก่อนบันทึกใบสั่งยา — ถ้าพบจะปฏิเสธพร้อมคำเตือน แพทย์ยืนยันข้ามได้เฉพาะเมื่อกรอกเหตุผล และถูกบันทึก audit

  • บล็อกอัตโนมัติ · ข้ามได้เฉพาะแพทย์ + เหตุผล (audited override)
  • คู่ยาตีกันเริ่มต้น เช่น NSAID + ARB

POST /api/pharmacy/prescriptions (override_safety, override_reason)

ความปลอดภัยการสั่งยา

ผู้ช่วย AI (เลือกเปิด) AI assist (optional)

ช่วยร่างบันทึกการตรวจจากข้อความสั้น ๆ ของแพทย์ (scribe) และตรวจเคลมก่อนส่งด้วยการอ่านความสอดคล้องของวินิจฉัย–หัตถการ–สิทธิ (claim pre-audit) แพทย์เป็นผู้ตรวจและยืนยันเสมอ

  • ปิดโดยค่าเริ่มต้น เปิดด้วยคีย์ใน .env · ไม่มีคีย์ = โหมดจำลอง
  • ผลลัพธ์เป็นร่างเท่านั้น — แพทย์ตรวจและยืนยันก่อนบันทึกเสมอ

GET /api/ai/statusPOST /api/ai/scribePOST /api/ai/claim-preaudit

ผู้ช่วย AI (เลือกเปิด)

แล็บ · เอกซเรย์ · ห้องยา Lab, imaging & pharmacy

สั่งตรวจและรายการรอผล (CPOE) Orders & worklist (CPOE)

แพทย์สั่งแล็บ/เอกซเรย์จากชุดตรวจมาตรฐาน (ช่วงอ้างอิง + ค่าวิกฤตต่อรายการ) ผลกรอกโดยพยาบาล/แพทย์แบบมีโครงสร้าง หรือรับอัตโนมัติจากเครื่องผ่าน HL7v2 (ORM ออก / ORU เข้า) ดูกราฟแนวโน้มค่าเดียวกันย้อนหลังต่อผู้ป่วย

  • ค่าวิกฤตติดธงทันทีและส่งแจ้งเตือนทาง LINE ไปยังปลายทางที่คลินิกตั้งค่าไว้
  • ผลที่ปิดแล้วแก้ไม่ได้ (แก้ได้เฉพาะแบบ correct ที่เก็บของเดิม) · ทุกขั้นถูก audit
  • การเชื่อมต่อ LIS/RIS ตั้งค่าในหน้าตั้งค่า → 'เชื่อมต่อแล็บ' ใช้กุญแจเครื่อง (X-Api-Key) แยกจากบัญชีคน พร้อมทะเบียนข้อความเข้า–ออก

POST /api/ordersGET /api/orders/worklistGET /api/orders/trend/{hn}/{code}GET /api/orders/{id}/hl7-ormPOST /api/integrations/oru/{tenant}GET /api/integrations/messages

สั่งตรวจและรายการรอผล (CPOE)

ทะเบียนภาพทางการแพทย์ (DICOM) + PACS Imaging registry (DICOM) + PACS

ทะเบียนสตัดดี้ภาพต่อผู้ป่วย (Study/Series UID, modality, วันที่) รับจาก PACS ผ่านปลายทางเครื่อง และปุ่ม 'เปิดภาพ' ไปยัง OHIF viewer บนรายการเอกซเรย์ ลิงก์ไม่มีชื่อหรือเลขบัตรผู้ป่วย

  • ชุด PACS (Orthanc + OHIF) มาพร้อมระบบเป็น docker profile — เปิดใช้เมื่อคลินิกพร้อม
  • ไม่ตั้งค่า viewer = ไม่แสดงปุ่ม (ไม่มีลิงก์ตาย)

GET/POST /api/imaging/{hn}/studiesPOST /api/integrations/imaging/{tenant}

ทะเบียนภาพทางการแพทย์ (DICOM) + PACS

ห้องยาและคลังยา (TMT) Pharmacy & inventory (TMT)

ใบสั่งยารอจ่าย จ่ายแบบทั้งใบหรือไม่จ่ายเลย (ตัดสต็อกเมื่อครบทุกรายการ) คลังยาแจ้งเตือนใกล้หมด จุดสั่งซื้อซ้ำ ราคาเก็บเป็นสตางค์จำนวนเต็มเสมอ

  • รหัสยามาตรฐาน TMT · โหลดแคตตาล็อกทางการได้
  • นำเข้าประวัติจ่ายยาเก่าด้วย CSV
  • คิวยาต่อเนื่อง: ผู้ป่วยพิมพ์ 'ยา' ทาง LINE หรือเจ้าหน้าที่บันทึก → แพทย์อนุมัติ → ใบสั่งยาซ้ำใบล่าสุดเข้าห้องยา

GET /api/pharmacy/prescriptions/pendingPOST /api/pharmacy/prescriptions/{id}/dispenseGET /api/pharmacy/drugsPOST /api/refills · /api/refills/{id}/approve

ห้องยาและคลังยา (TMT)

กล่องงานแพทย์ Clinical inbox

ผลแล็บ/เอกซเรย์ที่ติดธงผิดปกติ (รวม HL7 OBX-8: H/L/HH/LL/A) รวมในกล่องเดียว แพทย์ต้องกด 'รับทราบ' จึงหายจากรายการ — ปิดช่องผลผิดปกติตกหล่น พร้อมรายการผลค้างเกิน 24 ชม.

  • ธงผิดปกติจากคนกรอกหรือจากเครื่อง LIS/RIS
  • การรับทราบระบุผู้กดและเวลา (audit)

GET /api/inboxPOST /api/inbox/results/{id}/ack

กล่องงานแพทย์

การเงินและเคลม Billing & claims

ออกบิล · พร้อมเพย์ · บัตร/ผ่อน Invoicing, PromptPay, cards

สร้างบิลจากครั้งตรวจ (ค่าตรวจ + ยาที่จ่ายตามราคาคลัง) QR พร้อมเพย์แบบไดนามิกต่อบิล รับบัตร/ผ่อนผ่าน Opn — ข้อมูลบัตรไม่ผ่านเซิร์ฟเวอร์ของเรา

  • เลขใบเสร็จปี พ.ศ. (R69-000001) · จ่ายซ้ำไม่ได้
  • ใบเสร็จพิมพ์ได้ + แสดงราคาสกุลต่างประเทศสำหรับนักท่องเที่ยว
  • e-Tax ต่อบิล และเคลม สปสช./ประกันสังคม/กรมบัญชีกลาง พร้อมตรวจก่อนส่ง
  • แคตตาล็อกค่าบริการของคลินิก — เพิ่มรายการลงบิลได้
  • เคลมถูกปฏิเสธมีคิวแก้ไข: ใส่ AuthenCode ใหม่แล้วส่งซ้ำ

POST /api/billing/invoices/from-visitPOST /api/billing/invoices/{id}/pay-cardPOST /api/nhso/precheckPOST /api/nhso/claimsPOST /api/nhso/claims/{id}/resubmitPOST /api/billing/invoices/{id}/etax

ออกบิล · พร้อมเพย์ · บัตร/ผ่อน

ใบเสร็จรับเงิน Printable receipt

ใบเสร็จธีมคลินิก พิมพ์จากเบราว์เซอร์ได้ทันที (ปุ่มและเมนูถูกซ่อนตอนพิมพ์)

  • เข้าจากบิลที่ชำระแล้วทุกใบ

GET /billing/receipt/{id}

ใบเสร็จรับเงิน

ระบบ 30 บาท (บัตรทอง) — งานปฏิบัติการ 30-baht (UCS) operations suite

ชุดเครื่องมือสำหรับคลินิกที่เข้าร่วมบัตรทอง (ตั้งค่า → 'ระบบ 30 บาท'): เช็คลิสต์ขึ้นทะเบียนหน่วยบริการ (OSS) ยืนยันตัวตนผู้ป่วย FVS + AuthenCode ต่อครั้งรับบริการ ตัวนับโควตา 2 ครั้ง/ปีต่อคน และกระทบยอดการโอนรายสัปดาห์ (คาดว่าจะได้ vs ได้จริง) เป็นชุดหลักฐานเมื่อถูกตรวจสอบ

  • อัตรา/โควตาของกองทุนเป็นค่าตั้งค่า ปรับได้เมื่อ สปสช. เปลี่ยนกติกา
  • ระบบไม่สัญญารายได้จากกองทุน — ช่วยงานเอกสารและการกระทบยอดเท่านั้น
  • ทุกการเปลี่ยนสถานะเช็คลิสต์/งวดกระทบยอดถูก audit

GET/POST /api/nhso/ops/ossPOST /api/nhso/ops/fvs/{hn}GET /api/nhso/ops/quota/{hn}GET/POST /api/nhso/ops/reconciliation

ระบบ 30 บาท (บัตรทอง) — งานปฏิบัติการ

นัดหมาย · การแจ้งเตือน · เทเลเมด Appointments, notifications & telehealth

ปฏิทินนัดหมาย Appointment calendar

ปฏิทินนัดรายวัน/รายสัปดาห์เป็นช่วงละ 30 นาที ระบุแพทย์ผู้ตรวจ กันจองซ้อนช่วง 15 นาที ตารางออกตรวจรายแพทย์ ทำเครื่องหมายมาตามนัด/ยกเลิกได้จากปฏิทิน

  • เวลาไทยทั้งระบบ
  • เมนู 'นัดหมาย' และ URL เดิม /appointments มาลงหน้านี้

POST /api/appointmentsGET /api/appointments/rangePOST /api/appointments/{id}/doneGET/POST /api/appointments/availability

ปฏิทินนัดหมาย

เตือนนัดทาง LINE → SMS → อีเมล Reminders on LINE → SMS → email

ส่งเตือนนัดและติดตาม (เช่น นัดตรวจฟันซ้ำ) ไปทางช่องทางแรกที่ผู้ป่วยมี: LINE ที่เชื่อมบัญชีแล้ว ถ้าไม่มีจึงส่ง SMS แล้วจึงอีเมล ข้อความมีเพียงชื่อคลินิก+เวลา ไม่มีข้อมูลการรักษาเด็ดขาด

  • SMS เลือกผู้ให้บริการได้: Twilio หรือ ThaiBulkSMS (ผู้ให้บริการไทย ค่าส่งถูกกว่า ลงทะเบียน Sender ID ได้) · อีเมลผ่าน SendGrid
  • ผู้ป่วยเชื่อม LINE โดยพิมพ์ HN + เบอร์โทรใน LINE ของคลินิก · เว็บฮุก LINE ตรวจลายเซ็นทุกคำขอ
  • ยังไม่ใส่คีย์ = ช่องทางนั้นปิดอยู่ ระบบรายงานตามจริงว่าส่งทางไหน

POST /api/appointments/remind-duePOST /api/line/webhook/{tenant}

เตือนนัดทาง LINE → SMS → อีเมล

พบแพทย์ทางไกล (เทเลเมด) Telehealth video visits

เริ่มวิดีโอคอลจากเวชระเบียน ส่งลิงก์ให้ผู้ป่วยเปิดในเบราว์เซอร์โดยไม่ต้องติดตั้งแอป วิดีโอเป็นแบบ P2P — ภาพ/เสียงไม่ผ่านเซิร์ฟเวอร์ของเรา

  • ลิงก์ผู้ป่วยหมดอายุใน 2 ชม. และไม่มีข้อมูลส่วนตัวในลิงก์
  • TURN relay ตั้งค่าได้เมื่อเครือข่ายผู้ป่วยเข้มงวด

POST /api/telehealth/sessionsGET /tele/{room}

พบแพทย์ทางไกล (เทเลเมด)

ทันตกรรม (แพ็กเฉพาะทาง) Dental (specialty pack)

ชาร์ตฟันกราฟิก + แผนการรักษา Graphical odontogram + treatment plans

แท็บ 'ชาร์ตฟัน' บนเวชระเบียน: ชาร์ตฟันระบบ FDI กดซี่ฟันเพื่อบันทึกสิ่งที่พบ (ผุ อุด ถอน ครอบ ฯลฯ) และสร้างแผนการรักษาหลายรายการจากแคตตาล็อกหัตถการของคลินิก พร้อมใบเสนอราคาสองภาษาให้ผู้ป่วยตัดสินใจก่อนเริ่ม

  • สิ่งที่พบมีสถานะ มีอยู่เดิม / วางแผน / ทำแล้ว · ลบได้เฉพาะทันตแพทย์
  • แผนมีสถานะ ร่าง → เสนอ → รับ → เสร็จสิ้น (ยกเลิกได้) · ราคาต่อรายการมาจากแคตตาล็อก (เซิร์ฟเวอร์คำนวณ)

GET /api/dental/{hn}/chartPOST /api/dental/{hn}/findingsGET/POST /api/dental/{hn}/plansPOST /api/dental/plans/{id}/itemsGET/POST /api/dental/procedures

ชาร์ตฟันกราฟิก + แผนการรักษา

เคลมทันตกรรม สปสช. 30 บาท + ประกันสังคม ฿900 Dental claims: NHSO 30-baht + SSO ฿900

กระเป๋าสิทธิบนเวชระเบียน: ประกันสังคมทันตกรรม ฿900/ปี (ใช้ไปแล้ว–คงเหลือ) และสิทธิบัตรทองทันตกรรม ยื่นเคลมจากหัตถการที่ทำจริงในไม่กี่คลิก ส่วนที่กองทุนจ่ายถูกจำกัดตามเพดานคงเหลือโดยอัตโนมัติ (ส่วนเกินเป็นผู้ป่วยชำระ)

  • อัตรา/เพดานเป็นค่าตั้งค่า ปรับตามประกาศกองทุน
  • เคลมผูกกับหัตถการและวันที่ทำจริง · ทุกการยื่นถูก audit

GET /api/dental/{hn}/sso-entitlementPOST /api/dental/{hn}/sso-claimsGET /api/dental/{hn}/nhso-entitlementPOST /api/dental/{hn}/nhso-claims

เคลมทันตกรรม สปสช. 30 บาท + ประกันสังคม ฿900

นัดตรวจฟันซ้ำ (recall) ทาง LINE / SMS / อีเมล Recall / recare on LINE, SMS & email

ตั้งกำหนดตรวจซ้ำ (เช่น ขูดหินปูนทุก 6 เดือน) ระบบรวมรายการที่ถึงกำหนดและส่งเตือนทางช่องทางแรกที่ผู้ป่วยมี — ข้อความไม่มีข้อมูลการรักษา

  • สถานะ รอ → แจ้งแล้ว → มาตามนัด / ยกเลิก
  • รายการถึงกำหนดสำหรับหน้าเคาน์เตอร์

GET/POST /api/dental/{hn}/recallsPOST /api/dental/recalls/{id}/notifyGET /api/dental/recalls-due

นัดตรวจฟันซ้ำ (recall) ทาง LINE / SMS / อีเมล

งานแล็บทันตกรรม + ค่ามือทันตแพทย์ (DF) Dental-lab cases + dentist fee (DF) ledger

ติดตามงานที่ส่งแล็บภายนอก (ครอบฟัน ฟันปลอม รีเทนเนอร์) สถานะ ส่งแล้ว → กำลังทำ → รับกลับ → ใส่ให้ผู้ป่วยแล้ว พร้อมคิวงานเกินกำหนด และสมุดค่ามือทันตแพทย์ต่อหัตถการ: บันทึกอัตรา DF ระบบคำนวณยอดเอง ออกรายงานรายเดือนพร้อมหัก ณ ที่จ่าย 3%

  • ยอด DF คำนวณฝั่งเซิร์ฟเวอร์จากราคาหัตถการจริง — ไม่รับตัวเลขจากหน้าจอ
  • สิทธิ์: ผู้ดูแล/ทันตแพทย์ · ทุกรายการถูก audit

GET/POST /api/dental/{hn}/lab-casesGET /api/dental/lab-cases-openPOST /api/dental/dfGET /api/dental/df-report

งานแล็บทันตกรรม + ค่ามือทันตแพทย์ (DF)

ผิวหนังและความงาม (แพ็กเฉพาะทาง) Dermatology & aesthetic (specialty pack)

คอร์ส/แพ็กเกจ · มัดจำ–ผ่อน · สมาชิกและแต้ม Courses & packages · deposits · membership & points

แท็บ 'ความงาม' บนเวชระเบียน: ขายคอร์สหลายครั้ง (เช่น เลเซอร์ 10 ครั้ง) ระบบรับรู้รายได้ตามครั้งที่ใช้จริง ส่วนที่ยังไม่ใช้เป็นรายได้รอรับรู้ ยกเลิกคอร์สรับรู้เฉพาะครั้งที่ให้บริการแล้ว รับมัดจำ/ผ่อนต่อผู้ป่วย และระบบสมาชิกระดับ + สะสมแต้ม

  • บัญชีรายได้ตรงกับราคาคอร์สเสมอ (ปัดครั้งสุดท้าย) · ใช้เกินจำนวนครั้งไม่ได้
  • ผู้ดูแลกำหนดแพ็กเกจ · พนักงานขาย/แพทย์ใช้สิทธิ์ให้ผู้ป่วย · ทุกครั้งถูก audit

GET/POST /api/aesthetic/packagesPOST /api/aesthetic/{hn}/packages · /packages/{id}/redeem · /cancelGET/POST /api/aesthetic/{hn}/paymentsGET/POST /api/aesthetic/{hn}/membership · /points

คอร์ส/แพ็กเกจ · มัดจำ–ผ่อน · สมาชิกและแต้ม

ตรวจสอบล็อตเวชภัณฑ์ · หยุดจ่ายเมื่อแพ้ · ภาวะไม่พึงประสงค์ Lot traceability · allergy hard-stop · adverse events

ทะเบียนเวชภัณฑ์ความงาม (ฟิลเลอร์ โบทูลินัม ยาชา) พร้อมล็อตและวันหมดอายุ บันทึกการใช้ต่อผู้ป่วยเพื่อย้อนรอย 'ล็อตนี้ใช้กับใครบ้าง' ได้ทันทีเมื่อมีการเรียกคืน ถ้าผู้ป่วยมีประวัติแพ้สารนั้นระบบปฏิเสธการบันทึกใช้ และมีทะเบียนภาวะไม่พึงประสงค์

  • ล็อตหมดอายุติดธงเตือน ⚠ · จำนวนคงเหลือตัดอัตโนมัติ ใช้เกินคงเหลือไม่ได้ · แพทย์ข้ามการหยุดเมื่อแพ้ได้เฉพาะแบบระบุเหตุผล (audited)
  • ทะเบียนภาวะไม่พึงประสงค์ระดับคลินิกสำหรับรายงาน อย./สบส.

GET/POST /api/aesthetic/consumables · /lotsPOST /api/aesthetic/{hn}/consumable-usageGET /api/aesthetic/lots/{id}/traceGET/POST /api/aesthetic/{hn}/adverse-events

ตรวจสอบล็อตเวชภัณฑ์ · หยุดจ่ายเมื่อแพ้ · ภาวะไม่พึงประสงค์

ความยินยอมถ่ายภาพ PDPA + ผังการฉีด (face chart) PDPA photo consent + injection face chart

บันทึกความยินยอมถ่ายภาพก่อน–หลังแยกตามวัตถุประสงค์ (รักษา / การตลาด) เพิกถอนได้ทุกเมื่อ และผังใบหน้าบันทึกจุดฉีด ผลิตภัณฑ์ ยูนิต/ซีซี ต่อครั้ง เป็นประวัติหัตถการที่ค้นย้อนได้

  • ประวัติความยินยอมแบบ append-only (ให้/เพิกถอน) — ดูสถานะปัจจุบันได้เสมอ
  • ผังบันทึกจุด (ตำแหน่งบนใบหน้า) บริเวณ ผลิตภัณฑ์ ยูนิต ความลึก ต่อครั้ง

GET/POST /api/aesthetic/{hn}/photo-consent · /withdrawGET/POST /api/aesthetic/{hn}/face-charts

ความยินยอมถ่ายภาพ PDPA + ผังการฉีด (face chart)

คอมมิชชั่นแพทย์/พนักงานขาย Practitioner & sales commission

กำหนดกติกาคอมมิชชั่นต่อผู้ให้บริการหรือต่อแพ็กเกจ (เปอร์เซ็นต์/ต่อครั้ง) ระบบสะสมรายการเมื่อมีการใช้สิทธิ์หรือชำระเงิน และออกรายงานรายเดือน

  • ยอดคำนวณฝั่งเซิร์ฟเวอร์ · สิทธิ์: บทบาททางคลินิกและผู้ดูแล

GET/POST /api/aesthetic/commission/rulesPOST /api/aesthetic/commission/earnGET /api/aesthetic/commission/report

คอมมิชชั่นแพทย์/พนักงานขาย

ใบอนุญาตผู้ทำหัตถการ + ตรวจโฆษณา ม.38 / ฆสพ. Practitioner licensing + ad-compliance linter

ตั้งค่า → 'การกำกับดูแล': ทะเบียนผู้ทำหัตถการพร้อมเลขใบอนุญาต ขอบเขต และวันหมดอายุ ตรวจสอบสถานะ (มีใบอนุญาต / หมดอายุ / อยู่ในขอบเขต) ได้ก่อนมอบหมายหัตถการ — ปิดช่อง 'หมอเถื่อน' และตัวตรวจข้อความโฆษณาตาม พ.ร.บ.สถานพยาบาล ม.38 / เกณฑ์ ฆสพ. ก่อนโพสต์ พร้อมทะเบียนโฆษณาที่ผ่านการอนุมัติ

  • คำต้องห้าม/อวดอ้าง (เช่น 'รับประกัน' 'การันตี' 'รับรองผล') ถูกติดธงพร้อมระดับความรุนแรงและเหตุผล
  • รายการคำต้องห้ามเป็นรายการอ้างอิงแก้ไขได้ — ให้ตรวจกับประกาศฉบับปัจจุบัน ไม่ใช่คำแนะนำทางกฎหมาย

GET/POST /api/aesthetic/compliance/practitioners · /checkPOST /api/aesthetic/compliance/ad-lintGET/POST /api/aesthetic/compliance/ads

ใบอนุญาตผู้ทำหัตถการ + ตรวจโฆษณา ม.38 / ฆสพ.

ไปป์ไลน์การขาย · RFM · KPI สาขา Sales pipeline · RFM · branch KPIs

ตั้งค่า → 'ภาพรวมธุรกิจ': ลีดจากทุกช่องทางไล่สถานะ ใหม่ → ติดต่อแล้ว → ปรึกษา → เสนอราคา → ปิดการขาย/ไม่สำเร็จ พร้อมบันทึกการติดต่อ แบ่งกลุ่มลูกค้าแบบ RFM (มาล่าสุด–ความถี่–ยอดใช้จ่าย) และแดชบอร์ด KPI รายเดือนต่อสาขา

  • ลีดที่ปิดการขายนับเฉพาะเดือนนั้น
  • ข้อมูลสรุปเท่านั้น ไม่มีข้อมูลการรักษา

GET/POST /api/aesthetic/crm/leadsPOST /api/aesthetic/crm/leads/{id}/stageGET /api/aesthetic/crm/rfmGET /api/aesthetic/crm/kpi

ไปป์ไลน์การขาย · RFM · KPI สาขา

ผู้ป่วยใน (IPD) Inpatient

วอร์ด เตียง และ ADT Wards, beds & ADT

กระดานเตียงแบบเรียลไทม์: รับเข้า (admit) ย้ายเตียง จำหน่าย พร้อมบันทึกทางการพยาบาลระบุผู้เขียน เตียงซ้ำ/รับซ้ำถูกกันไว้

  • รับเข้า–จำหน่าย: แพทย์ · บันทึกพยาบาล: พยาบาล+แพทย์ · สร้างวอร์ด: ผู้ดูแล

GET /api/ipd/censusPOST /api/ipd/admissionsPOST /api/ipd/admissions/{id}/discharge

วอร์ด เตียง และ ADT

งานต่อเนื่องและส่งต่อ Care coordination

งานมอบหมาย Tasks

มอบหมายงานในทีม (โทรตามผู้ป่วย เตรียมเอกสาร ฯลฯ) ผูกกับผู้ป่วยได้ กำหนดวันเสร็จ และติ๊กปิดเมื่อทำแล้ว

  • งานค้างเรียงตามกำหนดเสร็จ

POST /api/tasksGET /api/tasksPOST /api/tasks/{id}/done

งานมอบหมาย

ทะเบียนส่งตัว Referrals

ใบส่งตัวไปโรงพยาบาล/คลินิกปลายทาง ติดตามสถานะ ร่าง → ส่งแล้ว → ปลายทางรับ → เสร็จสิ้น พร้อมเหตุผลส่งตัว

  • เปลี่ยนสถานะตามลำดับเท่านั้น · ทุกขั้นถูก audit

POST /api/referralsPOST /api/referrals/{id}/status

ทะเบียนส่งตัว

คลินิก NCD (เบาหวาน/ความดัน) NCD registry & home readings

ทะเบียนผู้ป่วยโรคเรื้อรัง พร้อมรายการผู้ป่วยหลุดนัด (ไม่มาตรวจเกิน 90 วัน / เบาหวานไม่ได้ตรวจ HbA1c เกิน 120 วัน) และค่าที่บ้านจาก LINE: ผู้ป่วยพิมพ์ 'น้ำตาล 132' หรือ 'ความดัน 135/88'

  • เป้าหมายรายคน (HbA1c / BP)
  • ค่าจาก LINE เข้าเวชระเบียนอัตโนมัติเมื่อเชื่อมบัญชีแล้ว

POST /api/ncd/enrollGET /api/ncd/registryGET /api/ncd/gaps

คลินิก NCD (เบาหวาน/ความดัน)

บริหารคลินิก Clinic administration

วิเคราะห์ Analytics

ตัวเลขวันนี้และกราฟ 7 วัน (จำนวนตรวจ/รายรับตามวันเวลาไทย) — ข้อมูลสรุปเท่านั้น

  • สิทธิ์: แพทย์และผู้ดูแล

GET /api/analytics/summary

วิเคราะห์

บุคลากรและสิทธิ์ Staff & roles

ผู้ดูแลเพิ่มบัญชีบุคลากร กำหนดบทบาท (แพทย์ / พยาบาล / เวชระเบียน / ผู้ดูแล) ระงับ/เปิดใช้ รีเซ็ตรหัสผ่าน และแก้อีเมล/โปรไฟล์ — ไม่มีบัญชีร่วมใช้ ทุกคนมีชื่อของตัวเองใน audit

  • รหัสผ่านใหม่ ≥10 ตัวอักษร · บัญชีที่ระงับเข้าสู่ระบบไม่ได้

GET/POST /api/staffPOST /api/staff/{username}/role · /active · /reset-password

บุคลากรและสิทธิ์

สาขาและบุคลากร Branches & staff

เพิ่มสาขาและกำหนดสังกัดพนักงาน คิวถูกแยกตามสาขาโดยอัตโนมัติ

  • มีผลเมื่อเข้าสู่ระบบครั้งถัดไป

POST /api/branchesPUT /api/branches/staff/{username}

สาขาและบุคลากร

แม่แบบบันทึกและวิธีใช้ยา Note & sig templates

คลังแม่แบบบันทึกการตรวจและข้อความวิธีใช้ยา (sig) ของคลินิก แพทย์เรียกใช้จากฟอร์มตรวจได้ทันที

  • ผู้ดูแล/แพทย์จัดการ · แชร์ทั้งคลินิก

GET/POST /api/templates/notesGET/POST /api/templates/sigs

แม่แบบบันทึกและวิธีใช้ยา

หน้าเว็บคลินิกสาธารณะ Public clinic webpage

แก้เนื้อหาหน้าเว็บสาธารณะของคลินิก (เกี่ยวกับเรา บริการ เวลาทำการ) เผยแพร่ที่ /clinic/{รหัสคลินิก} พร้อมสถานะเปิด/ปิดและคิวรอโดยประมาณ — ไม่มีข้อมูลผู้ป่วยเด็ดขาด

  • ธีม Jade & Gold เดียวกับระบบ

PUT /api/siteGET /api/public/site/{tenant}

หน้าเว็บคลินิกสาธารณะ

ตั้งค่าบัญชี + MFA + การเชื่อมต่อ Account settings, MFA & integrations

ผู้ใช้เปลี่ยนรหัสผ่านเอง (ต้องยืนยันรหัสเดิม) และเปิดยืนยันตัวตนสองชั้นด้วยแอป Authenticator (TOTP) แท็บ 'เชื่อมต่อแล็บ' จัดการกุญแจเครื่อง LIS/RIS และแท็บเฉพาะสาขา: 'ระบบ 30 บาท' (เวชกรรม) · 'ภาพรวมธุรกิจ' และ 'การกำกับดูแล' (ความงาม)

  • ความลับ TOTP แสดงครั้งเดียวตอนตั้งค่า
  • รหัสผ่านใหม่ ≥10 ตัวอักษร

POST /api/auth/passwordPOST /api/auth/mfa/setupPOST /api/auth/mfa/enableGET/POST /api/labs/connections

ตั้งค่าบัญชี + MFA + การเชื่อมต่อ

บันทึกการใช้งาน (Audit) Audit browser

ผู้ดูแลดูบันทึกการใช้งานทั้งหมด: ใครทำอะไรกับทรัพยากรไหนเมื่อไร กรองตามผู้ใช้/การกระทำ แบ่งหน้า — ตอบข้อกำหนด PDPA เรื่องตรวจสอบย้อนหลัง

  • อ่านอย่างเดียว · เฉพาะผู้ดูแล

GET /api/audit

บันทึกการใช้งาน (Audit)

มาตรฐานและการแลกเปลี่ยนข้อมูล Standards & interoperability

FHIR R4 (Patient / Encounter / Condition) สำหรับระบบภายนอก ส่งข้อมูลครั้งตรวจเข้า Health Link ได้ต่อครั้ง และส่งออก 43 แฟ้ม สธ. เป็น zip — ทั้งหมดใช้รหัสมาตรฐานเดียวกับที่บันทึกในระบบ (ICD-10-TM · TMT)

  • ทุกเส้นทางต้องยืนยันตัวตนด้วยเซสชันคลินิก (ไม่มีเส้นทางเปิดสาธารณะ)

GET /api/fhir/R4/metadata · /Patient/{hn} · /Encounter · /ConditionPOST /api/healthlink/push/{visit_id}GET /api/export/fortythree

มาตรฐานและการแลกเปลี่ยนข้อมูล

ตัวอย่างหน้าเว็บสาธารณะ Public page (example)

หน้าเว็บของคลินิกที่สมัครเองผ่านระบบ พร้อมข้อมูลที่ผู้ดูแลคลินิกกรอก

  • ลิงก์จอง LINE · โทร · แผนที่ (เฟสถัดไป)

GET /clinic/{slug}

ตัวอย่างหน้าเว็บสาธารณะ

สถาปัตยกรรมระบบ Architecture

เบราว์เซอร์แท็บเล็ต / มือถือ / PCGateway (nginx)origin เดียว · คุกกี้ httpOnlyWeb (Next.js)ไทยเป็นหลัก · ธีม Jade & GoldAPI (FastAPI)RBAC · audit ทุกการเข้าถึงFHIR R4 · specialty configMySQLcore +DB ต่อคลินิกRedisคิว · จำกัดอัตราห้องเทเลเมดชั้นเชื่อมต่อ (เปิดใช้ด้วย .env)LINE Messaging (เชื่อมบัญชี/เตือนนัด/ยา/ค่าที่บ้าน)SMS: Twilio หรือ ThaiBulkSMS · อีเมล: SendGridOpn Payments (บัตร/ผ่อน)สปสช. AuthenCode + e-Claim · ระบบ 30 บาทประกันสังคม (SSO) · กรมบัญชีกลาง (CGD)e-Tax (ETDA)Health Link (FHIR) · 43 แฟ้ม สธ.LIS/RIS (HL7v2 ORM/ORU)PACS: Orthanc + OHIF viewer (DICOM)S3 เก็บเอกสารแนบ (ทางเลือก)AI adapter (scribe · claim pre-audit)Google / Apple sign-in · TURN relay

ทุกบริการภายนอกเปิดใช้ด้วยการตั้งค่าใน .env เท่านั้น (ไม่มีคีย์ = โหมดจำลอง และระบบรายงานตามจริงว่าช่องทางนั้นปิดอยู่) · ข้อมูลผู้ป่วยอยู่ในฐานข้อมูลแยกรายคลินิกบนเซิร์ฟเวอร์ในประเทศไทย เข้ารหัสเลขบัตรระดับฟิลด์ และมี audit log ทุกการเข้าถึง · ข้อความถึงผู้ป่วยทุกช่องทาง (LINE / SMS / อีเมล) ไม่มีข้อมูลการรักษา · เอกสาร API (Swagger) อยู่ที่พอร์ต API โดยตรงที่เส้นทาง /docs