NCDsreen คีย์ย้อนหลัง

ในความเป็นจริง แฟ้มนี้จะไม่ฟ้อง error วันอัพเดด(Dateupdate) เนื่องจาก การคีย์ NCD สามารถเปิด service ใหม่(คีย์เดินหน้า) และคีย์ ในรายเดิมกี่ครั้งก็ได้ใน 1 ปี เพราะ HDC จะจับเอาข้อมูลที่บันทึกล่าสุดเป็นหลัก

แต่ก็ยังมีบางแห่งที่ยังกลับไปแก้ไขวันบันทึกเดิม (ไม่อยากเปิดserviceใหม่)
! ปัญหาคือ วัน Update จะ error

วิธีแก้ไข
1.ก่อนอื่น รัน scpt ตรวจสอบดูก่อนว่า มีการกลับไปคีย์ย้อนหลังจริงหรือไม่... ตามนี้
..............................................
SELECT
ncd.pcucode,
ncd.pid,
ncd.dateupdate AS 'วันคัดกรองล่าสุด',
v.dateupdate AS 'วันมารับบริการ'
FROM visit v
INNER JOIN ncd_person_ncd_screen ncd  ON v.pid=ncd.pid AND v.visitno=ncd.visitno
WHERE ncd.screen_date BETWEEN'2017-10-01'AND CURDATE()
AND date(v.dateupdate) <> date(ncd.dateupdate);
..............................................
จะได้....คือวันรับบริการเป็นวันหลังจากวันคัดกรองล่าสุด ..ตามนี้

2.รัน scpt อัพพเดด วันรับบริการ ให้ตรงตามวันscreen  ตามนี้
.....................................................
update visit vt
set vt.dateupdate=concat(vt.visitdate,SUBSTR(vt.dateupdate,11,9))
WHERE vt.visitdate BETWEEN '2017-10-01' AND CURDATE();
.....................................................
3.ให้ใช้ scpt ชุดแรก รันตรวจสอบอีกรอบว่า รายเรคคอร์ด ดังกล่าวต้องไม่มีโผล่มา เป็นอันจบจ้า
...........................................................................................................

ปัญหาต่อมาของ NCDScreen คือ " เอาคนเสียชีวิตมาคัดกรอง"
แก้ปัญหา
3.1.ก่อนอื่น รันscpt ตรวจสอบดูว่ามีการนำบุคคลที่เสียชีวิตมาคัดกรองจริงหรือไม่  ตามนี้
.........................................................
select p.pid AS'HN',c.titlename AS'คำนำหน้า',
p.fname AS'ชื่อ',p.lname AS'สกุล',ncd.screen_date AS'วันคัดกรอง' ,
pd.deaddate AS 'วันเสียชีวิต'
FROM ncd_person_ncd_screen ncd
INNER JOIN person p ON ncd.pid = p.pid
INNER JOIN ctitle c ON p.prename=c.titlecode
INNER JOIN persondeath pd ON ncd.pid = pd.pid
WHERE ncd.screen_date BETWEEN '2017-10-01' AND CURDATE()
AND p.typelive in ('1','3')
AND pd.deaddate <= ncd.screen_date GROUP BY p.pid;
.........................................................
จะได้..

แก้ไข ได้ 3 วิธี (เอาที่สบายใจ)
วิธีที่ 1 
  1.1  แจ้งลบข้อมูลแฟ้ม NCDScreen โดยเข้า QCDATA61 / to delete (มีเฉพาะ สสจ.อุดรธานี)
>>>link วิธีใช้งาน แจ้งลบข้อมูลใน Server HDC<<<

 ส่วน สสจ.อื่นให้แจ้งไปที่ศูนย์คอมฯของจังหวัดและทำการลบ แฟ้มดังกล่าวใน server นะจ๊ะ
 1.2 ส่งแฟ้ม NCDSreen เข้า HDC ใหม่อีกรอบ  ทั้งนี้ "ต้องไม่มีคนที่เสียชีวิตดังกล่าวในแฟ้มนี้" ตรวจสอบด้วย scpt  ชุดแรก(ด้านบน)  >> รันแล้ว "ต้องไม่มีรายชื่อโผล่มา"

 วิธีที2
    2.1 กรณี "ผู้ที่ยังมีชีวิตอยู่" แต่ในNCDScreen แจ้งว่าเป็น "คนที่เสียชีวิตมาคัดกรอง"
ปัญหาเกิดจาก แฟ้ม DEATH ของ HDC ข้อมูล Error เอง
   แก้ไข >>ให้แจ้งลบข้อมูลแฟ้ม Death โดยเข้า QCDATA to delete (มีเฉพาะ สสจ.อุดรธานี) ส่วน สสจ.อื่นให้แจ้งไปที่ศูนย์คอมฯของจังหวัดและทำการลบ แฟ้มดังกล่าวใน server
   2.2 ส่งแฟ้ม Death ทั้งหมดเข้า HDC ใหม่อีกรอบ ทั้งนี้ "ต้องไม่มีคนที่เสียชีวิตดังกล่าวในแฟ้มนี้"
ตรวจสอบด้วย scpt ดังนี้
.....................................
SELECT
p.pid,
p.prename,
p.fname,
p.lname,
pd.deaddate
FROM person p
INNER JOIN persondeath pd ON p.pid=pd.pid
WHERE pd.pid = '1234';
.....................................
หมายเหตุ : ที่ตำแหน่งตัวเลข '1234'  ของบรรทัด WHERE pd.pid = '1234'; ให้เปลี่ยนเป็น PID ของคนต้องการตรวจสอบ ว่ายังเสียชีวิตอยู่หรือไม่  >> รันแล้ว "ต้องไม่มีรายชื่อโผล่มา"

วิธีที่ 3
  3.1 เลื่อนวันเสียชีวิตออกไป เช่น คัดกรอง วันที่  '2017-10-03' แต่คนดังกล่าวเสียชีวิตตั้งแต่ '2017-08-12'  แก้ไขโดยเข้าไปที่หน้า ประชากร แก้ไขวันตาย อาจให้เป็น '2017-10-04' (คัดกรองเสร็จ วันต่อมาก็เสียชีวิตเลย..อิอิ) จากนั้นให้ส่งแฟ้ม PERSON ทั้งหมดรวมตาย และแฟ้ม DEATH เข้าไปพร้อมกันด้วยนะจ๊ะ 
หมายเหตุ : วิธีที่ 3 ได้ผลจริง....แต่อย่าลืมไปขออนุญาตเจ้าตัวก่อนนะค่ะว่า"..อิอิ


link ที่เกี่ยวข้อง
1.จัดการแฟ้มผู้พิการตามโครงสร้าง 43 แฟ้ม ใหม่ 61
2.แฟ้ม Person error เพราะรหัสสถานบริการหลัก "ว่าง"
3.จัดการperson ปี 61


..................กล้วยๆที่คนชอบพูด คือ ง่ายๆสบายๆ เมื่อไหร่ก็ได้ ...แต่อย่าลืมว่ากว่าจะได้มา 1 ลูกใช้เวลาปลูกเป็นปีๆเลยนะ..........................





ไม่มีความคิดเห็น:

https://www.blogs

 kllgnsgkj[jtlm'oahd bfldkb'pdojgaojp mfigjdo;sjgaij misjgo;sjagijwo;