03 July 2012

HOSxP Report Design ตอน DBPipeline


ภาพจาก www.columbiatechnologies.com

มีคนถามผมว่าหากจะเริ่มต้นเขียนรายงานสักตัวต้องเริ่มตรงไหนก่อนดี ผมคงตอบว่า
  1. ต้องรู้จักภาษา SQL เป็นพื้นฐานก่อน.
  2. ต้องรู้จัก ตารางต่างๆ ใน HOSxP ก่อน
  3. ต้องรู้จัก DBPipeline 
  4. ต้องรู้จึก คำสั่งต่างๆใน Report Design ของ HOSxP
  5. ต้องรู้จัก Control ต่างๆ ที่มีใน Report Design ของ HOSxP



หากมี 5 ข้อนี้ก็คงจะสามารถเขียน Report ได้สบายๆครับในบทความนี้ผมคงไม่พูดถึงว่าคำสั่ง sql คืออะไรหรือมีอะไรบ้าง และ ขอข้ามขั้นตอนเรื่องตารางใน HOSxP ซึ่งท่านสามารถศึกษาได้เองจากการดู SQL Trace ใน HOSxP เวลาเรียกดูหน้าต่างของโปรแกรมในระบบงานที่เีกี่ยวข้องกับการทำรายงาน


เกริ่นมานานแล้วขอเข้าเรื่องเลยละกันนะครับ DBPipeline คือท่อที่่เชื่อมต่อกับ Database นั่นเอง ใน HOSxP จะมีตั้งแต่ DBPipeline ,DBPipeline1 - DBPipeline10 เลยทีเดียว เพื่อให้ผู้เขียน Report สามารถนำข้อมูลมาใส่เตรียมไว้ใช้กับ Report ได้สะดวกมากขึ้น


DBPipeline ตัวแรกสามารถนดึงข้อมูลมาใส่ได้ 2 วิธี

1. วิธีแรกคือผ่านหน้าสำหรับใส่คำสั่ง SQL ่ก่อนที่จะเปิดหน้า Report Design วิธีนี้ไม่เป็นที่นิยมนักหากต้องการเขียน Report ที่ยืดหยุ่นได้ เช่น ต้องการใส่ค่าตัวแปรที่ต้องการจะดูเองเป็นต้น โดยส่วนมากหน้านี้มักจะนิยมใช้คำสั่ง sql เป็น "Select 1 as cc"  หรือหากต้องการสร้าง Report ง่าย ก็อาจใส่เป็นคำสั่ง sql ลงไปเลยเช่น "select * from patient where hn = '0145279'" โดยทิ้งให้ รับค่าเป็น HN แทน

    ในหน้านี้ Report Design จะบังคับใส่ Parameter อย่างน้อย 1 ตัว ในกรณีนี้เราเลือก "cc" เป็น Parameter เท่านี้เมื่อเปิดหน้า Designer ขึ้นมา DBPipeline ของเราก็จะได้มาแล้วครับ

    มาถึงตรงนี้หลายคนอาจสงสัยว่าทำไมต้องใส่ Parameter ในระบบ HOSxP มีหลายฟอร์มเช่น ใบนัด OPDCard หรือ ใบสั่งยา ที่ต้องส่ง Paramter จากหน้า ฟอร์มมาให้กับ Report เช่น VN หรือ AN เป็นต้นเพื่อจะได้ Print ออกมาได้ตรงกับ HN ของคนไข้ จึงจำเป็นต้องมีด้วยเหตุผลนี้ครับ


2.วิธีที่ 2 วิธีนี้เป็นที่นิยมใช้กันมากครับ มีข้อดีกว่าวิธีแรกคือ หากเรา preview แล้วพบว่าคำสั่ง sql ที่เราใช้มี field ไม่ครบ เราไม่ต้องถอยออกไปถึงหน้าใส่คำสั่ง sql แต่เราสามารถ เปลี่ยนได้ผ่านหน้า Designer เลยโดยมีข้อแม้ว่าต้อง Preview ก่อน 1 ครั้งแล้ว Report Designer จะดึงข้อมูลมาเก็บไว้ใน DBPipeline ให้โดยใช้ Function ของ HOSxP Report Designer ที่ชื่อว่า ChangeReportSQL



 ChangeReportSQL('select distinct p.hn,concat(p.pname,p.fname," ",p.lname)as ptname,'+
  ' p.birthday,c.begin_year,c.chronic_type,p.addrpart,p.moopart,a.* '+
  ' from clinicmember c, patient p ,thaiaddress a '+
  ' where c.hn =p.hn and p.chwpart =a.chwpart '+
  ' and p.amppart = a. amppart and p.tmbpart=a.tmbpart and c.hn in ('+clinic_hn+')  '+
  ' and p.chwpart="67" and p.amppart="05" '+
  ' and p.tmbpart ="'+tumbon+'" and c.clinic="002" order by p.moopart ,p.addrpart  ') ;


เมื่อใช้คำสั่งนี้ DBPipeline ก็จะเปลี่ยนให้เหมือนกันครับ ส่วน DBPipeline ก็ให้ใช้คำสั่ง ChangeDBPipelineLink1SQL,ChangeDBPipelineLink2SQL,ChangeDBPipelineLink3SQL เป็นต้น



  จากภาพเมื่อเราใช้คำสั่ง ChangeReportSQL แล้วเราก็จะสามารถนำ Field ที่ได้จากการดึงข้อมูลมาใส่ใน DBPipeline มาใช้ใน Report ได้เลย






บทความนี้เมื่ออ่านอาจเข้าใจยาก แต่หากลองปฏิบัติแล้วก็จะเข้าใจมากขึ้นครับ


Download เอกสารได้ที่ SCRIBD.COM

1 comment:

Unknown said...

สุดยอด..จ้า