แนวคิดทะเบียนบริการ (Service Items Concept)
เอกสารนี้อธิบาย “แนวคิดระดับระบบ” ของ ทะเบียนบริการ (Service Items / Service Catalog) ว่าคืออะไร แตกต่างจากทะเบียนสินค้าอย่างไร ใช้ข้อมูลอะไรบ้าง และมีผลต่อบัญชี ภาษี และรายงานอย่างไร
เหมาะสำหรับ: เจ้าของกิจการ, ทีมบัญชี, System Admin, Business Analyst และ AI/RAG ที่ต้องการเข้าใจโครงสร้างข้อมูลของบริการใน Vetpresso
1) คำจำกัดความพื้นฐาน
1.1 Service Item คืออะไร
Service Item (ทะเบียนบริการ) คือ รายการ “ค่าบริการ” ที่โรงพยาบาลสัตว์ใช้คิดค่ารักษาและบริการแก่ลูกค้า เช่น
- ค่าตรวจสุขภาพ, ค่าตรวจติดตาม
- ค่า LAB, X-ray, Ultrasound
- ค่าผ่าตัด, ทำหมัน, ทำฟัน
- ค่าฝากเลี้ยง, Hotel, Grooming
- ค่าบริการเหมาจ่ายอื่น ๆ
คุณสมบัติหลัก
- ไม่มีสต็อก ไม่ถูกนับจำนวนคงเหลือ
- เป็น “หน่วยของรายได้” ในเอกสารขาย
- มีผลต่อ รายได้, VAT, และ บัญชี โดยตรง
1.2 เปรียบเทียบกับ Product Item (ทะเบียนสินค้า)
| ด้าน | Service Item (ทะเบียนบริการ) | Product Item (ทะเบียนสินค้า) |
|---|---|---|
| ลักษณะ | ค่าบริการ / หัตถการ / LAB / Hotel / Grooming | สินค้าที่จับต้องได้ (ยา, เวชภัณฑ์, อาหาร, สินค้าหน้าร้าน) |
| การตัดสต็อก | ❌ ไม่ตัดสต็อกโดยตรง | ✅ มีสต็อก, ตัดเข้า–ออกคลัง |
| บทบาทในบัญชี | ตัวกำหนดรายได้ + VAT | มีทั้งรายได้ (ขายสินค้า) และต้นทุนคงเหลือในคลัง |
| แหล่งใช้งานหลัก | OPD/IPD Flow, Billing, POS | Inventory, Purchasing, Issue-to-Service, POS |
- Service Item = หน่วยของรายได้
- Product Item = หน่วยของสต็อก
2) บทบาทของ Service Items ในระบบ Vetpresso
Service Items ทำหน้าที่เป็น “สะพาน” ระหว่าง การรักษา, การคิดเงิน, และ บัญชี ดังนี้
2.1 ในกระบวนการตรวจรักษา (OPD/IPD)
- เมื่อหมอเลือก “หัตถการ / Procedure / ค่า LAB / Package” ในหน้า OPD/IPD
ระบบจะใช้ Service Items เป็นตัวแทนค่าบริการ - Service Items สามารถเชื่อมกับ สูตรตัดสต็อก (Issue-to-Service)
เพื่อให้ ระบบไปตัด Product Items ที่ใช้จริงในเบื้องหลัง
2.2 ในการออกเอกสารขาย
- ใบค่ารักษา / ใบแจ้งหนี้ / ใบเสร็จ / POS
แสดงชื่อและราคาจาก Service Items - Service Items กำหนด:
- รายได้จะลงบัญชีไหน
- VAT จะคิดแบบรวม/ไม่รวม/ยกเว้น
- เอกสารประเภทใดที่อนุญาตให้ใช้บริการนี้
2.3 ในระบบบัญชีและภาษี
Service Items แต่ละตัวผูกกับ:
- Revenue Group – กลุ่มรายได้เพื่อใช้ในรายงาน
- Revenue Account Code – เลขบัญชีรายได้
- VAT Type & Rate – ประเภท VAT และอัตราภาษี
ผลลัพธ์คือ:
- รายงาน VAT ขาย (Output Tax Report) ถูกต้อง
- งบกำไรขาดทุนสามารถแยกวิเคราะห์รายได้ตามประเภทบริการ
- AI สามารถนำข้อมูลรายได้ตาม Service Items ไปวิเคราะห์ต่อได้ เช่น กำไรตาม Service Group, ฤดูกาล, หมอผู้ให้บริการ
3) โครงสร้างข้อมูลหลักของ Service Item
ตารางนี้อธิบาย “Field สำคัญ” ของหนึ่งรายการ Service Item (ชื่อ field ใช้เพื่ออ้างอิงเชิงแนวคิด อาจแตกต่างจากชื่อในฐานข้อมูลจริง)
3.1 ข้อมูลระบุตัวตน
-
service_code
รหัสบริการที่ไม่ซ้ำกัน เช่นSRV-CONSULT-001,LAB-CBC,SURG-SPAY-DOG-S- ใช้ค้นหา, ออกรายงาน, เชื่อมต่อกับระบบภายนอก
- ไม่ควรนำรหัสเดิมกลับมาใช้ใหม่ เมื่อยกเลิกบริการไปแล้ว
-
service_name_th / service_name_en
ชื่อบริการที่แสดงให้ผู้ใช้และลูกค้าเห็นบนหน้าจอและเอกสาร -
is_active
ใช้สำหรับปิด/เปิดการใช้งานบริการ (แนะนำให้ปิดการใช้แทนการลบ)
3.2 การจัดกลุ่มบริการและรายได้
-
service_group
กลุ่มบริการเชิงปฏิบัติการ เช่น- Consultation
- Vaccination
- Surgery
- LAB
- Imaging
- Pet Hotel
- Grooming
-
revenue_group
กลุ่มรายได้เชิงบัญชี/วิเคราะห์ เช่น- รายได้ค่าตรวจรักษา
- รายได้ LAB & Imaging
- รายได้ผ่าตัด
- รายได้ฝากเลี้ยง / Hotel
- รายได้ Grooming
การมีทั้ง service_group และ revenue_group ทำให้:
- ทีมงานหน้าร้านกับทีมหมอใช้ภาษาที่เข้าใจง่าย (service_group)
- ทีมบัญชีและการเงินสามารถดูรายงานตามมุมมองของบัญชี (revenue_group)
3.3 การตั้งราคา
-
pricing_mode
รูปแบบการคิดราคา เช่นFIXED_PER_VISIT– ราคาคงที่ต่อครั้งPER_DAY– ราคาต่อวัน/คืนBY_WEIGHT– ราคาแตกต่างตามน้ำหนักสัตว์PACKAGE– ใช้ในแพ็กเกจเหมา
-
base_price
ราคามาตรฐานของบริการ (ตาม mode ที่กำหนด) -
currency_code
รหัสสกุลเงิน (เช่นTHB) – เผื่อรองรับการใช้งานข้ามประเทศในอนาคต
3.4 ภาษีมูลค่าเพิ่ม (VAT)
- vat_type
INCLUDE– ราคาที่ตั้งไว้รวม VAT แล้วEXCLUDE– ราคายังไม่รวม VATEXEMPT– ยกเว้น VAT
- vat_rate
เช่น7,0(กรณีอัตรา 0%) เป็นต้น
3.5 การผูกบัญชี (Accounting Mapping)
- revenue_account_code
เลขบัญชีรายได้ในผังบัญชีของโรงพยาบาล เช่น411101,411201 - cost_center / department / branch_code (ถ้ารองรับ)
ใช้ระบุศูนย์ต้นทุนหรือฝ่ายที่เกี่ยวข้องกับบริการนั้น
การกำหนด mapping ให้ถูกตั้งแต่แรก จะช่วยลดงานแก้ไขเอกสารย้อนหลัง และทำให้การปิดงวดบัญชีเป็นไปอย่างราบรื่น
3.6 ขอบเขตสาขาและการแสดงผล
- available_branches
รายการสาขาที่อนุญาตให้ใช้บริการนี้ (กรณีระบบมีหลายสาขา) - display_in_pos
ใช้กำหนดว่าจะให้บริการนั้นแสดงให้เลือกใน POS หรือไม่ - is_package_only
บางบริการอาจถูกออกแบบให้ใช้เฉพาะในแพ็กเกจ ไม่ให้ขายแยกเดี่ยว
4) ความสัมพันธ์กับ Inventory (สินค้าและสต็อก)
ถึงแม้ Service Item จะ ไม่ตัดสต็อกเอง แต่สามารถเชื่อมกับ Product Items ได้ผ่านกลไกเช่น:
- สูตรเบิกสินค้าไปยังบริการ (Issue-to-Service)
ตัวอย่าง:- Service: ผ่าตัดทำหมันสุนัข (≤ 10 กก.)
- ใช้ยา A 1 ขวด
- ใช้ไหมเย็บ B 3 ซอง
- ใช้สำลี C 10 ก้อน
- Service: ผ่าตัดทำหมันสุนัข (≤ 10 กก.)
ผลลัพธ์:
- หน้าบิลค่ารักษา → เห็นเป็น “ค่าผ่าตัดทำหมันสุนัข” (Service)
- ฝั่งคลังสินค้า → ตัดสต็อกจากยาและเวชภัณฑ์ตามสูตร (Products)
แนวคิดนี้ทำให้ บริการ เป็นหน่วยของรายได้ที่เข้าใจง่ายสำหรับลูกค้า
แต่ ต้นทุนและสต็อก ยังคุมได้ละเอียดจากฝั่ง Inventory
5) แนวทางการออกแบบรหัสและโครงสร้าง Service Items
เพื่อลดความซ้ำซ้อนและรองรับการวิเคราะห์ในอนาคต แนะนำหลักการดังนี้
-
ออกแบบรหัสบริการอย่างมีโครงสร้าง
- ใช้ Prefix ตามกลุ่ม เช่น
CONS-,LAB-,SURG-,HOTEL-,GRM- - เติมรหัสย่อยเพื่อให้เข้าใจได้จากรหัส เช่น น้ำหนัก/ขนาด/หมวด
- ใช้ Prefix ตามกลุ่ม เช่น
-
หลีกเลี่ยงการสร้างบริการซ้ำความหมาย
- ถ้าเป็นเพียงการเปลี่ยนราคาเล็กน้อย → ใช้บริการเดิม ปรับราคาในระบบ
- ถ้าเป็นการเปลี่ยน “นิยามของบริการ” อย่างชัดเจน → สร้างรหัสใหม่
-
แยกบริการตามรูปแบบการคิดราคาอย่างชัดเจน
- กรณีคิดตามน้ำหนัก: ให้ชื่อบริการบอกเงื่อนไข เช่น
- “ผ่าตัดทำหมันสุนัข (≤ 10 กก.)”
- “ผ่าตัดทำหมันสุนัข (> 10–20 กก.)”
- กรณีคิดตามน้ำหนัก: ให้ชื่อบริการบอกเงื่อนไข เช่น
-
ออกแบบ Service Group / Revenue Group ตั้งแต่ต้น
- เพื่อรองรับการทำ Dashboard, BI, AI ในอนาคต
6) ตัวอย่างการตั้งค่า Service Item
6.1 ตัวอย่าง: ตรวจสุขภาพทั่วไปสุนัข/แมว
- service_code:
CONS-GEN-001 - service_name_th: ตรวจสุขภาพทั่วไปสุนัข/แมว
- service_group: Consultation
- revenue_group: รายได้ค่าตรวจรักษาทั่วไป
- pricing_mode: FIXED_PER_VISIT
- base_price: 500
- vat_type: INCLUDE
- vat_rate: 7
- revenue_account_code: 411101
- available_branches: ทุกสาขา
- display_in_pos: true
6.2 ตัวอย่าง: ค่าฝากเลี้ยงสุนัข (ต่อคืน)
- service_code:
HOTEL-DOG-NIGHT - service_name_th: ค่าฝากเลี้ยงสุนัข / คืน
- service_group: Pet Hotel
- revenue_group: รายได้ฝากเลี้ยงสัตว์
- pricing_mode: PER_DAY
- base_price: 450
- vat_type: EXCLUDE
- vat_rate: 7
- revenue_account_code: 411301
- available_branches: เฉพาะสาขาที่มี Hotel
- display_in_pos: true
7) แนวทาง Versioning และการเปลี่ยนราคา
เมื่อมีการปรับราคา หรือปรับโครงสร้างบริการ ควรตัดสินใจดังนี้
- กรณีเปลี่ยนราคาอย่างเดียว
- ใช้ Service Item เดิม ปรับ base_price / เงื่อนไขราคาในระบบ
- กรณีเปลี่ยนนิยามบริการ (เช่น เดิมไม่รวม LAB ตอนหลังรวม LAB ด้วย)
- สร้าง Service Item ใหม่ด้วยรหัสใหม่
- ปิดการใช้รหัสเดิม (
is_active = false) เพื่อเก็บประวัติในรายงานย้อนหลัง
8) มุมมองสำหรับ AI และ RAG-Vetpresso
เพื่อให้ AI ตอบคำถามผู้ใช้งานได้ดีขึ้น เอกสารนี้ช่วยให้ AI เข้าใจว่า:
- คำถามที่เกี่ยวข้องกับ “ค่าบริการ / ราคาค่ารักษา / แพ็กเกจ / รายได้จากบริการ”
→ ควรถูก map มาที่ Service Items ก่อนเสมอ - ถ้าลูกค้าถามเรื่อง “สต็อก / จำนวนคงเหลือ / ต้นทุนสินค้า / การเบิกจ่ายยา”
→ ควรส่งต่อคำถามไปยังส่วน Inventory / Product Items และ Issue-to-Service
ตัวอย่างคำถามที่ AI สามารถอ้างอิงจากเอกสารนี้ได้:
- “ทำไมออกใบเสร็จแล้วไม่ตัดสต็อกยา?”
- “ถ้าจะเพิ่มบริการใหม่ ต้องคุยกับบัญชีเรื่องอะไรบ้าง?”
- “อยากดูรายได้แยกตามประเภทบริการทำอย่างไร?”
9) เชื่อมโยงกับคู่มืออื่น
-
การตั้งค่าทะเบียนบริการครั้งแรก ดูที่
คู่มือ: การตั้งค่าทะเบียนบริการ (Service Catalog Setup)
(/setup/service-catalog) -
การตั้งค่าทะเบียนสินค้าและสต็อกเริ่มต้น ดูที่
คู่มือ: การตั้งค่าทะเบียนสินค้าและคลังสินค้า -
การใช้งานจริงในหน้า OPD/IPD และการคิดค่ารักษา ดูที่
คู่มือ: Medical OPD/IPD Flow และ Billing & Receipt Flow
เมื่อเข้าใจแนวคิด Service Items จากเอกสารนี้แล้ว การออกแบบโครงสร้างค่าบริการของโรงพยาบาลสัตว์จะชัดเจนขึ้น รองรับทั้งการใช้งานประจำวัน การทำบัญชี และการวิเคราะห์ด้วย AI ในระยะยาว