BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: udomchok ที่ พฤศจิกายน 11, 2010, 22:09:43 PM

หัวข้อ: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: udomchok ที่ พฤศจิกายน 11, 2010, 22:09:43 PM
ก่อนอื่นขอออกตัวไว้ก่อนว่าผมไม่ได้มา blame ใคร และผมก็ไม่ได้เก่งในเรื่องทำ Report หรือการเขียน SQL มากนัก แต่ก็พอใช้งานได้

การทำ Report ของพวกเราชาว Admin HOSxP นั้น หลาย ๆ ท่านสอบถามมาเกี่ยวกับการใช้คำสั่งรูปแบบต่าง ๆ การกำหนดเงื่อนไขต่าง ๆ เพื่อที่จะสร้าง report ใหม่ ๆ ขึ้นมา แต่(คิดว่า)ยังไม่มีใครเคยตรวจสอบ Report ที่มากับตัวโปรแกรม และหลาย ๆ ท่านนำไปใช้งาน
นอกจากนี้มีหลาย ๆ เงื่อนไขในการทำรายงานเพื่อให้สารสนเทศที่ถูกต้องบางเงื่อนไข เรายังใช้กันไม่ถูกต้อง ซึ่งผมเคยแนะนำไปในกระทู้ก่อนหน้านี้แล้ว เช่น การใช้เงื่อนไขเวลา อาจทำให้ข้อมูล/สารสนเทศที่ได้ผิดพลาด

ลองดูตัวอย่าง report นี้ครับ

SYSTEM-RX-DRUG-USE-TOP-PRICE-SUMMARY

   ChangeReportSQL('select d.name,d.strength,d.units,count(distinct vn) as vn_count,sum(qty) as sum_qty,sum(o.sum_price) as sum_price '+
  ' from opitemrece o,drugitems d '+
  ' where o.icode = d.icode and o.rxdate '+
  ' between "'+ds1+'" and "'+ds2+'" '+
  ' group by d.name,d.strength,d.units '+
  ' order by sum_price desc limit 20 ');

เปรียบเทียบกับ
  ChangeReportSQL('select concat(d.name," ", d.strength," ", d.units) as drugname, count(o.icode) as scripts, sum(o.qty) as sumqty, sum(o.sum_price) as sumprice ' +
    'from opitemrece o ' +
    'join drugitems d on d.icode=o.icode ' +
    'where (o.rxdate between "' + bdate + '" and "' + edate + '") ' +
    'group by o.icode ' +
    'order by sumprice desc ' +
    'limit 20');
ซึ่งเป็นชุดคำสั่งที่ผมเขียนขึ้น (ก่อนจะไปเปิดดูใน "รายงาน","ระบบรายงานหลัก" แล้วเจอเจ้าตัวรายงานข้างบน...เพราะให้น้องห้องยาเปิดใช้...ผมเลยไม่ค่อยได้ดู) ไปทำเป็น Custom report อีกตัวหนึ่งแทน (CUSTOM-Top20DrugUse) ตามที่เคยเผยแพร่ไปแล้ว

พบว่าชุดคำสั่งทั้ง 2 ให้ผลเกือบเหมือนกัน แต่ที่ต่างกันคือจำนวนใบสั่งยา ซึ่งได้จาก count(distinct vn) as vn_count และ count(o.icode) as scripts

ต่างกันอย่างไร...ผมขออธิบายนิดหนึ่ง
ใน SYSTEM-RX-DRUG-USE-TOP-PRICE-SUMMARY ใช้การนับใบสั่งยา (ในตัว Report ใช้คำว่า "รายการ") จาก vn โดยเลือกนับ vn ที่ไม่ซ้ำกัน (distinct vn) คำสั่งนี้จะไม่ผิดพลาดหาก vn ใน opitemrece มีค่าทั้งหมด (ไม่เป็นค่าว่าง) แต่ในความเป็นจริงเราจะพบว่า vn ใน opitemrece สามารถเป็นค่าว่างได้ กรณีที่รายการยานั้นเป็นของผู้ป่วยใน ดังนั้นการนับโดยใช้ vn แบบไม่ซ้ำกัน จึงผิดพลาด เพราะจะไปนับเอาใบสั่งยาของผู้ป่วยในที่มีหลายใบเป็นในเดียวกัน....นี่แหละทำให้จำนวนใบสั่งยา ("รายการ" ในตัว Report) จึงน้อยกว่าที่ควรจะเป็น

ดังนั้น...จงอย่าเชื่อสิ่งที่คนอื่นบอกทั้งหมด ให้ใช้หลักกาลามสูตร 10 ประการ (http://th.wikipedia.org/wiki/%E0%B8%81%E0%B8%B2%E0%B8%A5%E0%B8%B2%E0%B8%A1%E0%B8%AA%E0%B8%B9%E0%B8%95%E0%B8%A3) ของพระพุทธเจ้าที่ตรัสสอนไว้ครับ

ผมอยากให้พวกเราได้ข้อมูล/สารสนเทศที่ถูกต้อง เพื่อนำไปตอบสนองผู้ที่ต้องการใช้อย่างถูกต้อง
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: asawincyber ที่ พฤศจิกายน 11, 2010, 22:22:45 PM
ขอบคุณครับ อ.โก้
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: udomchok ที่ พฤศจิกายน 11, 2010, 22:54:23 PM
ฝากพวกเราที่เขียน REPORT ช่วยตรวจสอบกันด้วยครับ  :D :D
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: Khuad ที่ พฤศจิกายน 11, 2010, 23:13:45 PM

... นั่นแหล่ะครับ คือเหตุผลที่ว่าทำไมเวลาผมจะทำ Report สักตัว ต้องคิดมาก เรื่องมาก  ;D ....


... บางที่ user ที่ขอรายงานจากเรา  เขาไม่รู้หรอกครับว่าข้อมูลที่เขาได้รับจากเราไปมันถูกต้องหรือเปล่า ได้ข้อมูลที่ถูกต้องไปใช้ก็ดีไป ถ้าได้ที่ไม่ถูกต้องไปใช้บางทีก็เป็นปัญหาได้ครับ
    ดังนั้นก็ต้องเป็นหน้าที่ของเราครับ ที่จะต้องใช้ความรอบครอบในการที่จะนำข้อมูลจากฐานข้อมูลของเรามาออกเป็นรายงานหรือนำไปใช้งาน

    หรือบางที ใน รพ. แต่ละแห่งก็มีระบบการทำงานบางงานที่ไม่เหมือนกัน การนำรายงานจากที่อื่นที่มีระบบการทำงานที่ต่างกันไปใช้ ก็อาจจะทำให้ได้ข้อมูลที่ผิดพลาดก็ได้ครับ 
    อันนี้เป็นอีกเหตุผลหนึ่งที่เวลามีคนมาขอตาราง reporttemplate แล้วผมไม่ค่อยได้ให้ไป ไม่ได้หวงอะไรหรอกครับ แต่กลัวว่าเกิดเอาไปใช้จริงแล้วอาจจะมีข้อผิดพลาดได้น่ะครับ

    เป็น Admin หรือผู้ทำรายงาน ต้องละเอียดและรอบครอบครับ ...  :D ...
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: jdadmin1 ที่ พฤศจิกายน 11, 2010, 23:31:45 PM
 ;D ;D ;D นี่คือปัญหาหนึ่งที่ทำให้ผมไม่ค่อยโพสต์ Report ขึ้นบอร์ดครับ เพราะบางรายงานมันดึงข้อมูลมาจากคนละที่กัน(แล้วแต่บริบทการคีย์ข้อมูลของแต่ละที่) ถ้าเข้าใจฐานข้อมูลของตัวเองก็สามารถนำไปประยุกต์ใช้ได้แต่ถ้าเก็บเอาไปใช้อย่างเดียวปัญหาก็เกิดเหมือนที่ป๋าโก้กับป๋าขวดว่ามาครับ ;D ;D ;D
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: Khuad ที่ พฤศจิกายน 11, 2010, 23:36:14 PM
อ้างจาก:  ป๋า JD
;D ;D ;D นี่คือปัญหาหนึ่งที่ทำให้ผมไม่ค่อยโพสต์ Report ขึ้นบอร์ดครับ  บลา บลา บลา  ;D ;D ;D

... แหม  ป๋า ช่างกล้านะ ....  55555555555555  ;D  ;D  ;D .......
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: jdadmin1 ที่ พฤศจิกายน 11, 2010, 23:39:03 PM
 ;D ;D ;D
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: doramon ที่ พฤศจิกายน 11, 2010, 23:42:12 PM
ทำจากแบบละเอียดน้อย ไป หา ละเอียดมากๆๆ 

ผมจะพยายามทำที่ละส่วน  แล้วตรวจสอบ ว่าข้อมูลเป็นเท่าไร

แล้วเอามารวมกัน มันต้องข้อมูลตรงกัน


ว่าเรา join ตารางมากขึ้น  ถ้าเขียน sql ไม่ถูก  มันจะหาย หรือเพิ่ม หรือ ผิด ได้ครับ

ต้องระวัง แบบที่ พี่โก้ บอก

ต้องพยายามตรวจสอบให้ดี

หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: Neo ที่ พฤศจิกายน 12, 2010, 05:00:01 AM
ขอบคุณ อ.โก้มากครับสำหรับความรู้ดีๆๆ ผมก็เจอบ่อยเหมือนกันครับ ที่เจ้าหน้าที่เดินมากขอรายงาน ถือกระดาษเศษเขียน 2 - 3 บรรทัดบอกขอรายงานแบบนี้หน่อย พอทำเสร็จบอกว่าไม่ใช่ไม่ถูก ช่วงหลังเวลาเขียนรายงานผมต้องทำข้อตกลงในเงื่อนกับคนที่ว่าก่อนครับแล้วค่อยเขียน เขียนเสร็จแจ้งให้มาดูว่าข้อมูล OK มั่ย ไม่ OK ปรับคำสั่งหรือแจ้งสาเหตุทำไมข้อมูลไม่ถูกครับ
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: poramat ที่ พฤศจิกายน 12, 2010, 06:24:11 AM
ขอบคุณ อ.โก้มากครับสำหรับความรู้ดีๆๆ ผมก็เจอบ่อยเหมือนกันครับ ที่เจ้าหน้าที่เดินมากขอรายงาน ถือกระดาษเศษเขียน 2 - 3 บรรทัดบอกขอรายงานแบบนี้หน่อย พอทำเสร็จบอกว่าไม่ใช่ไม่ถูก ช่วงหลังเวลาเขียนรายงานผมต้องทำข้อตกลงในเงื่อนกับคนที่ว่าก่อนครับแล้วค่อยเขียน เขียนเสร็จแจ้งให้มาดูว่าข้อมูล OK มั่ย ไม่ OK ปรับคำสั่งหรือแจ้งสาเหตุทำไมข้อมูลไม่ถูกครับ
เคยถูกขอให้ทำรายงาน รายละเอียดไม่มีมากนัก ผมขอกลับบ้างให้อธิบายรายงานที่อยากได้ ถามนิยามของแต่ละ items คนขอรายงานปวดหัวกลับไป ผมก็มีเวลาหายใจได้ทำอย่างอื่นก่อน แบบนี้ก็เจอบ่อยครับ
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: nuttavut ที่ พฤศจิกายน 12, 2010, 08:19:48 AM
...สำหรับทานใดที่นำ Report จากที่นี่ไปใช้ ก็ให้ตรวจสอบให้ดีก่อน เพราะบริบท แต่ละที่มีความต่าง เอาเป็นแนวทางได้แต่ไม่ใช่ว่าเอาไปใช้เลยโดยไม่ได้ตรวจสอบ....
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ พฤศจิกายน 12, 2010, 08:35:16 AM
...สำหรับทานใดที่นำ Report จากที่นี่ไปใช้ ก็ให้ตรวจสอบให้ดีก่อน เพราะบริบท แต่ละที่มีความต่าง เอาเป็นแนวทางได้แต่ไม่ใช่ว่าเอาไปใช้เลยโดยไม่ได้ตรวจสอบ....
ยืนยันตามอ.ณัฐ เลยครับ...ถึงแม้ผมไม่มีรายงานมาแบ่งปัน..แต่ก็ขอเอาใจช่วย..และรบกวนทวนสอบรายงานที่ออกมาก่อนนำไปใช้จริงครับ... :)
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: itim2101 ที่ พฤศจิกายน 12, 2010, 08:47:31 AM
...สำหรับทานใดที่นำ Report จากที่นี่ไปใช้ ก็ให้ตรวจสอบให้ดีก่อน เพราะบริบท แต่ละที่มีความต่าง เอาเป็นแนวทางได้แต่ไม่ใช่ว่าเอาไปใช้เลยโดยไม่ได้ตรวจสอบ....
:D :D เห็นด้วยครับ หากนำไปใช้ควรตรวจสอบก่อน  :D :D
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: A ROON CHAI ที่ พฤศจิกายน 12, 2010, 09:07:53 AM
ขอบคุณอ.โก้มากครับ ตรงใจเลยทีเดียวครับ

ผมเก็บรายงานเกือบทุกอันที่โพสขึ้นมา บางอันเก็บไว้เฉยๆ คงต้องใช้เวลาตรวจสอบนาน
เพราะผมทำงานไม่ตรงสายงาน บางรายงานยังไม่เข้าใจ Code ก็ยังไม่กล้าใช้เหมือนกัน
บางรายงานต้องตรวจสอบกับข้อมูลที่มีในตารางจริง นับกันเป็นราย record เลยเพื่อดูว่าตรงไม๊ถึงจะกล้าใช้

ต้องขอขอบคุณ และขอเป็นกำลังใจให้อาจารย์ทุกท่านที่โพสแจกรายงานต่างๆ
สำหรับผมที่เขียนรายงานไม่เป็น อยู่ได้เพราะรายงานที่ท่านเอื้อเฟื้อมานี่แหละครับ
รพ.ผมได้ประโยชน์จากท่านไม่น้อย

สำคัญที่ผู้นำไปใช้ต้องตรวจสอบอย่างละเอียดก่อนว่าตรงตามบริบทความต้องการหรือไม่
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: weerathap ที่ พฤศจิกายน 12, 2010, 09:24:48 AM
ขอบคุณมากครับ
หัวข้อ: Re: ข้อควรระวังในการทำ Report
เริ่มหัวข้อโดย: วีระวัฒน์ (เอก) ที่ พฤศจิกายน 12, 2010, 09:27:04 AM
ผมเองเขียน รายงาน โดยจะเพิ่มรหัส กลางใว้โดยเพิ่มใน record ตาราง sys_var  เพื่อคนที่นำรายงานไปใช้ จะได้ไม่ต้องแก้ไขรายงานเลย ไปแก้ ค่าใน sys_value ให้ตรงกับ รหัสเดิมของเรา ในแต่ละตารางเท่านั้น
แต่ถ้า รายการนั้นมีมากเกินไปผมจะไปเพิ่มตารางหรือ ฟิวด์ เพื่อเป็น รหัสกลาง อีกต่างหาก นอกเหนือจาก ตารางเดิมของ อ.ชัยพร

ตัวอย่างที่เพิ่ม record ใน ตาราง sys_var