วันพุธที่ 26 มีนาคม พ.ศ. 2557

ข้อมูลในบัญชี 1 เพิ่มเองโดยไม่ทราบสาเหตุ

ก่อนอื่นต้องขสวัสดีอย่างเป็นทางการกับผู้รักการอ่านนะครับ    _/\_  "สวัสดีครับ" ^.^
 
        วันนี้ผมได้รับแจ้งจากเจ้าหน้าที่ฝ่าย PCU ครับว่า "ข้อมูลในบัญชี 1 เพิ่มขึ้น และประชากรใน บ้านเลขที่ 1 ของแต่ละหมู่ มันมีจำนวนมากกว่าปกติ !"?.  เป็นคำถามที่ผมเองก็ไม่รู้เหมือนกัน  ฮ่าๆๆ.....


      ผมได้พยายามจำลองเหตุการที่อาจจะเกิดขึ้นโดยพอจะสรุปออกมาดังนี้นะครับ
          1. มีคนมาเพิ่มข้อมูลของแต่ละหมู่เองโดยไม่ได้แจ้งให้เจ้าหน้าที่ทราบ(เจ้าหน้าที่ของ PCU เอง)
         2. เกิดจากโปรแกรมเพิ่มเองโดยอัตโนมัติ ...... (ในข้อนี้ผมคิดเล่นๆครับ)
        3. เกิดจากการเพิ่มโดยตั้งใจที่จะแกล้งกันเฉยๆ ..... (อันนี้ก็ขำๆ)
       เฮ้อ.....คิดไม่ออกจริงๆครับ ..........   แต่ก็ไม่ได้เกินความพยายามของเราจริงๆครับ .. ผมก็เจอจนได้ครับ


    สาเหตุจริงๆก็คือ  .......  การเพิ่มบุคคลใหม่ในส่วนของห้องบัตร(งานเวชระเบียน) ครับ เป็นการเข้าใจไม่ถูกของเจ้าหน้าที่ห้องบัตร ครับ

      จากภาพจะเห็นว่า มีสองปุ่มให้เลือกนะครับ  เรามาทำความเข้าใจกันนะครับว่าเขาคืออะไร!!!
                                 
         อยู่ในเขตรับผิดชอบ    หมายถึง เป็นคนที่มี type_area เป็น 1     เมื่อเทียบกับข้อมูลแฟ้ม person (เมื่อเพิ่มคนที่มีที่อยู่ในเขตรับผิดชอบของ PCU   ผู้ที่เพิ่มคนใหม่ในระบบต้องติ๊กเป็น อยู่ในเขตรับผิดชอบเท่านั้น  ห้ามลืม  ถ้าลืมคนที่ถูกเพิ่มจะไปอยู่ที่บ้านเลขที่ 1 และหมู่คือไปตามที่ลงข้อมูลครับ)

          อยู่ในเขต CUPS   หมายถึง เป็นคนที่มี type_area เป็น 4  เมื่อเทียบกับข้อมูลแฟ้ม person แต่ว่าผู้ที่ถูกเพิ่มอยู่ใน cup ของแต่ละอำเถอนะครับ
   
          กรณีที่ผู้ถูกเพิ่มไม่อยู่ในเกณฑ์ของทั้งสองข้อนี้ก็ไม่ต้องติ๊กอะไร เพราะนั่นคือผู้ป่วยนอกเขตจริงๆ  

   

                 ขอจบการแก้การปวดหัวเพียงเท่านี้ก่อนนะครับ มีอะไรใหม่ๆคงได้มาแลกเปลี่ยนเรียนรู้กันนะครับผม 
                       %%%%%%%%%%%%%   ขอให้โชคดีครับ   _/\_  %%%%%%%%%%%%%%%


วันศุกร์ที่ 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 แฟ้มไฟล์อีกรอบนะครับ   
 
                                               %%%%  ขอให้โชคดีครับ  _/\_ %%%%