BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: vinaisena ที่ กันยายน 07, 2010, 14:43:21 PM

หัวข้อ: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: vinaisena ที่ กันยายน 07, 2010, 14:43:21 PM
คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
มีโจทย์ ว่า
1. จำนวนการตรวจโรคจำแนกรายแพทย์ ตั้งแต่เวลา 09.00-16.00 ไม่รวม วันหยุด/วันหยุด นักขัตฤกษ์
อาจารย์ท่านใด แบ่งปัน SQL ได้บ้างครับ
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: pop_hosxp ที่ กันยายน 07, 2010, 15:13:20 PM
ลองอันนี้ได้ไหมครับ

select o.doctor, d.name, count(o.vn)
from ovstdiag o, doctor d
where o.doctor=d.code
and vstdate between "2010-01-01" and "2010-01-05" and vsttime between "09:00:00" and "12:00:00"
and vstdate not in (select holiday_date from holiday) and d.position_id=1
group by doctor, name
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: vinaisena ที่ กันยายน 07, 2010, 15:21:59 PM
จะลองครับท่านอาจารย์
เงื่อนไขทางนี้ ท่านแพทย์มีเงื่อนไขมากมายกว่านี้อีก ครับ ฟังโจทย์แล้วแทบอ๊วกๆๆ
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 07, 2010, 17:47:45 PM
ลองอันนี้ได้ไหมครับ

select o.doctor, d.name, count(o.vn)
from ovstdiag o, doctor d
where o.doctor=d.code
and vstdate between "2010-01-01" and "2010-01-05" and vsttime between "09:00:00" and "12:00:00"
and vstdate not in (select holiday_date from holiday) and d.position_id=1
group by doctor, name
ผมดุ sql หลายอัน รวมทั้งใน custom search ด้วยครับ เรื่องเวลาเนี่ยส่วนใหญ่จะอิง vsttime
ผมไม่ได้บอกว่าผิดหรือถูก แต่ผมตั้งข้อสังเกตให้พวกเราพึงระวังไว้นะครับว่า vsttime นั้นเป็นเวลาที่ลงทะเบียนส่งตรวจจากห้องบัตร หรือเวลาที่ออก VN นั่นเอง ไม่ใช่เวลาที่แพทย์ตรวจผู้ป่วยจริง
ต้องดูบริบทของแต่ละ ร.พ. ด้วยนะครับ

ดังนั้นการใช้ vsttime เป็นตัวจับการทำงานของแพทย์ว่าเวลานั้น-เวลานี้ แพทย์ตรวจได้กี่คน
ถ้าแพทย์ key สั่งยาเอง...ไม่มีปัญหาครับ detect ได้เลย ดูที่ service time ได้ครับ (service12)

ได้มาจากใน board นี้แหละครับ รู้สึกว่าจะของ อ.อ๊อด
อันที่ (Confirm) ผมพิสูจน์แล้วครับ
=========================================
service1 = เวลา
service2 = เวลา
service3 = เวลาพิมพ์ใบสั่งยา (บันทึกส่งตรวจ) (Confirm)
service4 = เวลาที่ดึงผู้ป่วยมาซักประวัติ
service5 = เวลาที่แพทย์ดึงผู้ป่วยมาตรวจ (เริ่มตรวจ) (Confirm)
service6 = เวลาที่บันทึกรายการยา จากห้องจ่ายยา Mode 2 (เริ่ม Key ยา) (Confirm)
service7 = เวลาที่บันทึกออกใบเสร็จรับเงิน
service8 = เวลาที่บันทึก Admit ผู้ป่วย (Confirm)
service9 = เวลา
service10 = เวลา
service11 = เวลาที่บันทึกซักประวัติเสร็จ
service12 = เวลาที่แพทย์บันทึกสั่งยา (ตรวจเสร็จ)
service12 = เวลาที่ห้องฉุกเฉินบันทึกการให้บริการ
service13 = เวลา
service14 = เวลา
service15 = เวลา
service16 = เวลาที่บันทึกจ่ายยาให้ผู้ป่วย (จากห้องจ่ายยา) (Confirm)
service17 = เวลา
service18 = เวลา
service19 = เวลาที่ห้องยา Key รายการยาเสร็จ (Confirm)
service20 = เวลาที่ห้องบัตรลงทะเบียนผู้ป่วย (ก่อนพิมพ์ใบสั่งยา)
=========================================

ส่วนอันนี้ผมใช้หาระยะเวลารอคอย
=========================================
if service6 is not null
waitingtime=service16-service6
else
waitingtime=service16-service12


service12,16,19 is null ไม่ได้มาตรวจ (ไม่ผ่านห้องตรวจ-ห้องยา)
service16 = Rx_operator.Rx_time where pay='Y' (แต่ไม่ update ถ้ามีการเรียกมาบันทึกใหม่)
service19 = Rx_operator.Rx_time where pay=''


ถ้าใช้หน้าจอซักประวัติ (พยาบาล) สั่งยา จะใช้ service11 เป็นเวลาสั่งยา
ห้องทันตกรรม


การหาเวลารอคอย

select v.vn, v.hn, v.oqueue, concat(p.pname,p.fname,' ',p.lname) as ptname, v.vsttime, t.service12, t.service19, r.rx_time, t.service16,
if(t.service19 is null,sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service12)),sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service19))) as wait_time
from rx_operator r
left outer join ovst v on v.vn=r.vn
left outer join patient p on p.hn=v.hn
left outer join service_time t on t.vn=r.vn
where r.vn like '530325%' and r.pay='Y' and r.pay_depcode="036"
order by r.rx_time

=========================================
ส่วนรายงานที่แนบนี้ก็...เพิ่งทำให้ OPD เสร็จเมื่อไม่นานมานี้ ขอทราบว่าแพทย์ที่ออกตรวจตอนเช้า (คลินิกรุ่งอรุณ) ตรวจได้คนละกี่ case
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: Bond_007 ที่ กันยายน 07, 2010, 17:54:12 PM
ขอบคุณครับ
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: vinaisena ที่ กันยายน 07, 2010, 18:55:26 PM
ขอบคุณครับ
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กันยายน 07, 2010, 21:39:11 PM
ที่หนักกว่านั้น  มีการ remed แทนแพทย์ได้ด้วยในบางคลินิก แต่เป็นเวลาราชการ  คงต้องจับแผนกและ user login ด้วยนะครับ...
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: [-_เอ็ม_-] ที่ กันยายน 08, 2010, 08:48:29 AM
ขอบใจอย่างแรงเลยนิ เป็นประโยชน์มากมาย  ;D
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: aun_s ที่ กันยายน 08, 2010, 09:32:21 AM
ถ้าไม่ให้คิดรวมวันหยุด ใช้ตารางHoliday มันจะมีแต่วันหยุด เสาร์ อาทิตย์นะซิครับ ไม่มีวันหยุดนักขัตฤกษ์เลย ใช่หรือเปล่าไม่รู้
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: arkhom ที่ กันยายน 08, 2010, 11:08:07 AM
ขอบคุณครับ
ลองอันนี้ได้ไหมครับ

select o.doctor, d.name, count(o.vn)
from ovstdiag o, doctor d
where o.doctor=d.code
and vstdate between "2010-01-01" and "2010-01-05" and vsttime between "09:00:00" and "12:00:00"
and vstdate not in (select holiday_date from holiday) and d.position_id=1
group by doctor, name
ผมดุ sql หลายอัน รวมทั้งใน custom search ด้วยครับ เรื่องเวลาเนี่ยส่วนใหญ่จะอิง vsttime
ผมไม่ได้บอกว่าผิดหรือถูก แต่ผมตั้งข้อสังเกตให้พวกเราพึงระวังไว้นะครับว่า vsttime นั้นเป็นเวลาที่ลงทะเบียนส่งตรวจจากห้องบัตร หรือเวลาที่ออก VN นั่นเอง ไม่ใช่เวลาที่แพทย์ตรวจผู้ป่วยจริง
ต้องดูบริบทของแต่ละ ร.พ. ด้วยนะครับ

ดังนั้นการใช้ vsttime เป็นตัวจับการทำงานของแพทย์ว่าเวลานั้น-เวลานี้ แพทย์ตรวจได้กี่คน
ถ้าแพทย์ key สั่งยาเอง...ไม่มีปัญหาครับ detect ได้เลย ดูที่ service time ได้ครับ (service12)

ได้มาจากใน board นี้แหละครับ รู้สึกว่าจะของ อ.อ๊อด
อันที่ (Confirm) ผมพิสูจน์แล้วครับ
=========================================
service1 = เวลา
service2 = เวลา
service3 = เวลาพิมพ์ใบสั่งยา (บันทึกส่งตรวจ) (Confirm)
service4 = เวลาที่ดึงผู้ป่วยมาซักประวัติ
service5 = เวลาที่แพทย์ดึงผู้ป่วยมาตรวจ (เริ่มตรวจ) (Confirm)
service6 = เวลาที่บันทึกรายการยา จากห้องจ่ายยา Mode 2 (เริ่ม Key ยา) (Confirm)
service7 = เวลาที่บันทึกออกใบเสร็จรับเงิน
service8 = เวลาที่บันทึก Admit ผู้ป่วย (Confirm)
service9 = เวลา
service10 = เวลา
service11 = เวลาที่บันทึกซักประวัติเสร็จ
service12 = เวลาที่แพทย์บันทึกสั่งยา (ตรวจเสร็จ)
service12 = เวลาที่ห้องฉุกเฉินบันทึกการให้บริการ
service13 = เวลา
service14 = เวลา
service15 = เวลา
service16 = เวลาที่บันทึกจ่ายยาให้ผู้ป่วย (จากห้องจ่ายยา) (Confirm)
service17 = เวลา
service18 = เวลา
service19 = เวลาที่ห้องยา Key รายการยาเสร็จ (Confirm)
service20 = เวลาที่ห้องบัตรลงทะเบียนผู้ป่วย (ก่อนพิมพ์ใบสั่งยา)
=========================================

ส่วนอันนี้ผมใช้หาระยะเวลารอคอย
=========================================
if service6 is not null
waitingtime=service16-service6
else
waitingtime=service16-service12


service12,16,19 is null ไม่ได้มาตรวจ (ไม่ผ่านห้องตรวจ-ห้องยา)
service16 = Rx_operator.Rx_time where pay='Y' (แต่ไม่ update ถ้ามีการเรียกมาบันทึกใหม่)
service19 = Rx_operator.Rx_time where pay=''


ถ้าใช้หน้าจอซักประวัติ (พยาบาล) สั่งยา จะใช้ service11 เป็นเวลาสั่งยา
ห้องทันตกรรม


การหาเวลารอคอย

select v.vn, v.hn, v.oqueue, concat(p.pname,p.fname,' ',p.lname) as ptname, v.vsttime, t.service12, t.service19, r.rx_time, t.service16,
if(t.service19 is null,sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service12)),sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service19))) as wait_time
from rx_operator r
left outer join ovst v on v.vn=r.vn
left outer join patient p on p.hn=v.hn
left outer join service_time t on t.vn=r.vn
where r.vn like '530325%' and r.pay='Y' and r.pay_depcode="036"
order by r.rx_time

=========================================
ส่วนรายงานที่แนบนี้ก็...เพิ่งทำให้ OPD เสร็จเมื่อไม่นานมานี้ ขอทราบว่าแพทย์ที่ออกตรวจตอนเช้า (คลินิกรุ่งอรุณ) ตรวจได้คนละกี่ case
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: arkhom ที่ กันยายน 08, 2010, 11:14:08 AM
มีอ. ท่านใหนพอจะมีรายงาน WorkLoad ของพยาบาลที่ซักประวัติที่OPD บางครับ 
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 08, 2010, 11:48:28 AM
ให้ไปเป็นตัวอย่าง ไปประยุกต์ใช้กันนะครับ ใครจะเอาไปปรับแต่งอย่างไร...ก็ตามความสามารถ ตามบริบทของหน่วยงานครับ

 ;D ;D ;D ;D ;D

ถ้าไม่ให้คิดรวมวันหยุด ใช้ตารางHoliday มันจะมีแต่วันหยุด เสาร์ อาทิตย์นะซิครับ ไม่มีวันหยุดนักขัตฤกษ์เลย ใช่หรือเปล่าไม่รู้
เพิ่มได้ครับ ในตาราง holiday สามารถใส่วันที่เป็นวันหยุดได้ทุกประเภทครับ เสาร์-อาทิตย์ ขัตฤกษ์ หยุดชดเชย ฯลฯ
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: vinaisena ที่ กันยายน 08, 2010, 16:34:36 PM
ชื่นชมรายงานนะ OK  work ครับ ท่าน
เรียน ถาม อ.โก้ เพิ่มเติมว่า
รายงานที่ทำมา ไม่ได้ script วันหยุด เสาร์ - อาทิตย์ ใช่ไหมครับ
จะได้อธิบายให้ รอง ผอ.ทราบอีกที
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 08, 2010, 20:49:59 PM
ชื่นชมรายงานนะ OK  work ครับ ท่าน
เรียน ถาม อ.โก้ เพิ่มเติมว่า
รายงานที่ทำมา ไม่ได้ script วันหยุด เสาร์ - อาทิตย์ ใช่ไหมครับ
จะได้อธิบายให้ รอง ผอ.ทราบอีกที
ถ้าหมายถึงตัวรายงานที่ผมแนบไป...จริง ๆ ผมตั้งใจจะทำเป็นแบบวันเดียวครับ คือหัวหน้า OPD จะกดดูเองแต่ละวัน
แต่บังเอิญช่องวันที่มีให้กำหนดเป็นช่วง (function ที่ อ.mn ใส่ไว้ใน report designer) ก็เลยสามารถนำไปใช้ได้กว้างขึ้น คือดูได้ตามช่วงเวลาที่กำหนด ดังนั้นจึงไม่มีการกำหนดว่าเป็นวันหยุดหรือวันไม่หยุด
(ไม่ SKIP วันหยุดทุกประเภทครับครับ) เพราะอย่างที่บอก ตอนทำมีวัตถุประสงค์เฉพาะครับ

และข้อจำกัดคือ แพทย์ต้อง key สั่งยาเองนะครับ ข้อมูลจึงจะถูกต้อง ปัญหาคือถ้าแพทย์ไม่ key เอง (เขียนใบสั่งยา...แล้วห้องยามา key) เราจะไม่ทราบเวลาที่แพทย์ตรวจเสร็จที่แท้จริง ข้อมูลอาจผิดพลาดได้ เพราะบางรายตรวจเสร็จไปตอน 8:25 น. กว่าห้องยาจะ key จะอาจเลยไปที่ 8:35 น. ถ้าเราตัดเวลาที่ 8:30 น. case แบบนี้จะหายไปครับ

หากไม่ mind อะไรมาก อาจใช้ rxdate rxtime ใน opitemrece ก็ได้

ผมอยากให้พวกเราเอาไปเป็นศึกษาเป็นตัวอย่างครับ และฝึกสร้างเป็นผลงานของท่านเอง (รวมทั้งแบ่งปัน) จะได้เกิดความภาคภูมิใจครับ (แต่อาจจะใช้เวลานานหน่อย...หากเร่งด่วนจริง ๆ ใช้วิธี ก. ไม่ได้ คงต้องใช้ ข. ครับ  ;D ;D ;D ;D ;D )
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: adisaksri ที่ กันยายน 09, 2010, 08:38:08 AM
ผมพบปัญหาอยู่อย่างหนึ่งคือถ้าพยาบาลตรวจ แล้วลงข้อมูลในช่อง  รคสพ.       รายงานก็นำมาแสดงด้วยซึ่งอันที่จริงแล้วแพทย์ไม่ได้ตรวจเอง   ไม่ทราบว่าส่วนนี้จะใช้คำสั่งตัดออกได้อย่างไร
หัวข้อ: Re: คำสั่งแสดงจำนวนการตรวจโรคจำแนกแพทย์ OPD
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 09, 2010, 11:35:27 AM
ต้องดู sql ที่ใช้ด้วยครับ
ลองดูที่ field doctor กับ command_doctor ใน ovst ครับ