วันศุกร์ที่ 21 มีนาคม พ.ศ. 2557

ChronicFU กับการส่งออก Foot+Ratina

             หลังจากที่ใช้ความพยายามมาหลายครั้งกับการแก้ไขเรื่องของตาราง ChronicFu ทีได้ทำการคีย์ข้อมูลการตรวจ ตา(Ratina) และ ตรวจ เท้า(Foot) ทำให้เกิดข้อสังเกตุที่ว่า " ทำไมข้อมูลไม่ออกอย่างที่ควรเป็น "        
      
 เริ่มมีงานเข้าแล้ว!!  
 สิ่งแรกที่ต้องคิดคือ  ใครเป็นคนลงข้อมูล และลงข้อมูลยังไง สุดท้ายจะรู้ได้อย่างไรว่าลงข้อมูลแล้ว ?
      
 >  ผมได้เริ่มจากลองส่งออก 21 แฟ้มไฟล์  และลองเปิดไฟล์ Chronicfu.txt ดู 

                           ก๊าก !  ข้อมูลออกครับ แต่ช่อง Foot + Ratina เป็น 2 และ 8 (ซึ่งแปลว่า ไม่ได้ตรวจ)  งานเข้าแน่ๆ

> ในที่สุดก็เจอ ตอ ...    จากการสันนิฐาน ว่าการลงข้อมูลคงเข้าใจอะไรกันผิดแน่ๆเลยทำให้ส่งข้อมูลไม่ออกทั้งๆที่คีย์หมดแล้ว  
         พระเอก ของงานนี้คือตาราง clinic_visit ครับ

วิธีการคือ
     1. ต้องดูว่าผู้ป่วยชื่ออะไรบ้างที่ได้รับการคีย์ตรวจ เท้า+ตา บ้าง (โดยดูจากข้อมูลจริงๆที่เจ้าหน้าที่ลงข้อมูลนะครับ.."one stop service ")  หรือใช้ sql ตัวนี้รันดูครับ
  SELECT   clvit.vn as 'VN_CHECK',  ov.pdx AS pdx1,  ov.vn AS vn1,  ovst.vstdate AS vstdate1,  pt.hn AS hn1,
  pt.pname AS pname1,  pt.fname AS fname1,  pt.lname AS lname1
FROM vn_stat ov
  LEFT JOIN patient pt ON pt.hn = ov.hn
  LEFT JOIN ovst ovst ON ov.vn = ovst.vn
  LEFT JOIN clinic_visit clvit ON ov.vn = clvit.vn
  LEFT JOIN clinicmember clm ON ov.hn = clm.hn
WHERE ((ov.pdx = "Z131") OR (ov.dx0 = "Z131") OR (ov.dx1 = "Z131") OR
    (ov.dx2 = "Z131") OR (ov.dx3 = "Z131") OR (ov.dx4 = "Z131") OR
    (ov.dx5 = "Z131")) AND ov.vstdate BETWEEN "2014-02-01" AND "2014-02-28"

"จาก script ด้านบน ให้เน้นที่  VN_CHECK ดูนะครับว่ามี อะไรขึ้นรึเปล่า ถ้ามีแสดงว่าคีย์ถูกต้องตามที่ สสจ.แจ้งไป ชี้ชัดๆนะครับ ถ้ามี ข้อมูลไม่ต้องทำต่อข้อ 2.  ถ้าไม่มี มาดูกันนะครับว่าจะทำไงต่อ อิอิ   ^.^"

   2.  จากนั้นก็มารัน script อันที่ 2 กันเลยดีกว่านะครับ 
ก่อนอื่นต้องทำความเข้าใขก่อนนะครับว่า script นี้ต้องรันแบบระมัดระวังครับเพราะต้องทำครั้งเดียว โดยหลักการคือว่า ผมต้องเอา VN ของคนที่มาตรวจคัดกรอง foot+Ratina ไปเพิ่มที่ตาราง clinic_visit เพราะฉนั้นต้องทำ sql ให้แน่ใจก่อนนะครับว่าถูกต้องจริงๆไม่อย่างนั้น.......  ตัวใครตัวเนานะครับ  +_+ !    รันเลยแล้วกันไม่เสียเวลาแล้วนะครับ 
     INSERT into clinic_visit (hn,vn,clinic,visit_type)
        SELECT  ov.hn  ,ovst.vn  ,  if(clm.clinic is null, '001' ,clm.clinic  )  ,1
        FROM vn_stat ov
        left join patient pt on pt.hn = ov.hn
        left join ovst ovst on ov.vn = ovst.vn
        left join clinic_visit clvit on  ov.vn = clvit.vn
        left join clinicmember clm on ov.hn = clm.hn  and clm.clinic in('001')
WHERE   (((ov.pdx = "Z131") OR (ov.dx0 = "Z131") OR (ov.dx1 = "Z131") OR
    (ov.dx2 = "Z131") OR (ov.dx3 = "Z131") OR (ov.dx4 = "Z131") OR
    (ov.dx5 = "Z131")) AND ov.vstdate BETWEEN "2014-02-01" AND "2014-02-28" )
" ** กดปุ่ม Exec ครั้งเดียวนะครับ เบาๆ เพราะไม่อย่างนั้น จะเพิ่มมากกว่าปกติครับ อิอิ"

3. ทดลองส่งออก 21 แฟ้มไฟล์อีกรอบนะครับ   
 
                                               %%%%  ขอให้โชคดีครับ  _/\_ %%%%
   


2 ความคิดเห็น:

  1. ในชุดคำสั่ง Insert ข้างล่าง ผมมีความเห็นว่าไม่ควรใช้รหัส ICD10 เป็นตักำหนด แต่น่าจะใช้คลินิกที่ส่งตรวจ (ตามนัดจากครั้งที่แล้ว) [=> คลินิกเบาหวาน/ความดัน...นั่นเอง] มาเป็นตัวกำหนดมากกว่า เพื่อเลียนแบบการทำงานจริงตาม pop up ของโปรแกรม

    ตอบลบ
  2. ขอบคุณอาจารย์โก้ที่ชี้แนะครับผม ... ยังไงก็คงฝากผู้ที่นำโค้ดนี้ไปใช้นะครับว่าต้องใช้ด้วยความระมัดระวังนะครับ (โปรดใช้ประสบการณ์ในการใช้งานนะครับ) _/\_

    ตอบลบ