วันอังคารที่ 2 มิถุนายน พ.ศ. 2563

ALL_Script

1.หากลุ่ม 6เดือน - 2 ปี ที่รับวัคซีน flu ปี 2563
<<<
SELECT p1.pid,p1.fname,p1.lname,p1.age,p1.hno,p1.moo,e1.visitno,e1.diagcode,e1.dateepi
FROM (SELECT p.pid,p.fname,p.lname,getageymd(p.birth,CURDATE())AS'age',h.hno,RIGHT(h.villcode,2) AS 'moo' FROM person p
INNER JOIN house h ON p.hcode = h.hcode
WHERE getagemonth(p.birth,CURDATE()) BETWEEN '6' AND '35'
AND p.typelive IN ('1','3'))AS p1
LEFT JOIN
(SELECT vv.visitno,vv.pid,vi.diagcode,vv.dateepi
FROM visitepi vv
INNER JOIN visitdiag vi on vv.visitno = vi.visitno
WHERE vi.diagcode = 'z25.1'
AND vv.dateepi >='2019-10-01') AS e1 ON p1.pid=e1.pid
#WHERE e1.dateepi is not null
GROUP BY p1.pid
ORDER BY p1.moo ASC,e1.dateepi ASC;
<<<
หมายเหตุ : หากต้องการเฉพาะรายชื่อผู้ที่รับวัคซีน ให้นำเครื่องหมาย # ออกที่บรรทัด #WHERE e1.dateepi is not null

2.หาผู้ที่รับวัคซีน flu63 ทั้งหมด : ประชากร type1,3 ทั้งหมด
<<<
SELECT p1.pid,p1.fname,p1.lname,p1.age,p1.hno,p1.moo,e1.visitno,e1.diagcode,e1.dateepi
FROM (SELECT p.pid,p.fname,p.lname,getageymd(p.birth,CURDATE())AS'age',h.hno,RIGHT(h.villcode,2) AS 'moo' FROM person p
INNER JOIN house h ON p.hcode = h.hcode WHERE p.typelive IN ('1','3') AND p.dischargetype = 9)AS p1
LEFT JOIN
(SELECT vv.visitno,vv.pid,vi.diagcode,vv.dateepi
FROM visitepi vv
INNER JOIN visitdiag vi on vv.visitno = vi.visitno
WHERE vi.diagcode = 'z25.1'
AND vv.dateepi >='2019-10-01') AS e1 ON p1.pid=e1.pid
#WHERE e1.dateepi is not null
GROUP BY p1.pid
ORDER BY e1.dateepi DESC;
<<<
หมายเหตุ : หากต้องการเฉพาะรายชื่อผู้ที่รับวัคซีน ให้นำเครื่องหมาย # ออกที่บรรทัด #WHERE e1.dateepi is not null

3.หากลุ่มโรคเรื้อรังที่รับวัคซีน Flu63
>>
SELECT p1.pid,p1.titlename,p1.fname,p1.lname,p1.chronic,p1.age,p1.hno,p1.moo,e1.visitno,e1.diagcode,e1.dateepi
FROM (SELECT p.pid,c.titlename,p.fname,p.lname,GROUP_CONCAT(pc.chroniccode)AS'chronic',
getageymd(p.birth,CURDATE())AS'age',h.hno,RIGHT(h.villcode,2) AS 'moo' FROM person p
INNER JOIN ctitle c ON p.prename = c.titlecode INNER JOIN personchronic pc ON p.pid=pc.pid
INNER JOIN house h ON p.hcode = h.hcode WHERE p.typelive IN ('1','3') AND p.dischargetype = 9 GROUP BY p.pid)AS p1
LEFT JOIN
(SELECT vv.visitno,vv.pid,vi.diagcode,vv.dateepi
FROM visitepi vv
INNER JOIN visitdiag vi on vv.visitno = vi.visitno
WHERE vi.diagcode = 'z25.1'
AND vv.dateepi >='2019-10-01') AS e1 ON p1.pid=e1.pid
#WHERE e1.dateepi is not null
GROUP BY p1.pid  ORDER BY e1.dateepi DESC;
>>
หมายเหตุ : หากต้องการเฉพาะรายชื่อผู้ที่รับวัคซีน ให้นำเครื่องหมาย # ออกที่บรรทัด #WHERE e1.dateepi is not null

@ ทั้ง 3 script >> หากต้องการเฉพาะผู้ที่ยังไม่ฉีด ว่ายังเหลือใครบ้าง ก็ให้เปลี่ยน   #WHERE e1.dateepi is not null (ทั้งบรรทัด) เป็น WHERE e1.dateepi is null จ้า
>><<
4.กลุ่ม 6เดือน - 2 ปี ที่รับวัคซีน flu63 (แยกรายเข็ม)
>>
SELECT p1.pid,p1.titlename,p1.fname,p1.lname,p1.age_mo,v1.visit1,v1.st1 AS 'เข็ม1',v1.visit2,v1.st2 AS 'เข็ม2'
FROM
(SELECT p.pid,ct.titlename,p.fname,p.lname,getageymd(p.birth,CURDATE())AS 'age_mo'
FROM person p
INNER JOIN ctitle ct ON p.prename =ct.titlecode
WHERE getagemonth(p.birth,CURDATE()) BETWEEN '6'AND'35'
AND typelive IN ('1','3')) AS p1
LEFT JOIN
(SELECT vi.pid,if(count(vi.visitno)= '1',MAX(vi.visitno),vi.visitno)AS 'visit1'
,if(count(vi.visitno)= '1',MAX(vi.dateepi),vi.dateepi) AS 'st1'
,if(count(vi.visitno) >= '2',MAX(vi.visitno),'')AS 'visit2'
,if(count(vi.visitno) >= '2',MAX(dateepi),'') AS 'st2'
FROM visitepi vi
INNER JOIN cdrug cg ON vi.vaccinecode =cg.drugcode
WHERE vi.dateepi > '2019-10-01'
AND cg.files18epi = '815'
GROUP BY vi.pid) AS v1 on p1.pid=v1.pid;

>><<
5.หากลุ่มผู้ป่วยโรคเรื้อรัง 15-59 ปี (DM@HT)-เพื่อคัดกรองสุขภาพจิต (2Q +St5) ปี 2563
>>
set @n = 0;

SELECT
@n := @n + 1 AS 'NO',
p.idcard,
pc.pid,
ct.titlename,
p.fname,
p.lname,
getAgeYearNum(p.birth,CURDATE())AS 'age',
h.hno,
right(h.villcode,2)as 'moo',
GROUP_CONCAT(pc.chroniccode)AS 'codechronic'
FROM personchronic pc
INNER JOIN person p ON pc.pid=p.pid
INNER JOIN ctitle ct ON p.prename = ct.titlecode
INNER JOIN house h ON p.hcode=h.hcode
WHERE p.dischargetype = 9
and getAgeYearNum(p.birth,'2019-10-01')BETWEEN '15' AND '59'
AND LEFT(pc.chroniccode,1) IN ('i','e')
AND p.typelive IN ('1','3')
GROUP BY pc.pid;
>><<
6.หากลุ่มผู้สูงอายุ-เพื่อคัดกรองสุขภาพจิต (2Q +St5) ปี 2563 >> (รวมchronic ที่อายุ >= 60 ปี)
>>
set @n = 0;
SELECT
@n := @n + 1 AS 'NO',
p.idcard,
p.pid,
c.titlename,
p.fname,
p.lname,
getAgeYearNum(p.birth,CURDATE())AS'age',
h.hno,
right(h.villcode,2)AS 'moo'
FROM person p
INNER JOIN ctitle c ON p.prename=c.titlecode
INNER JOIN house h ON p.hcode=h.hcode
WHERE p.typelive IN ('1','3')
AND getAgeYearNum(p.birth,CURDATE())>='60'
AND  p.dischargetype = 9
GROUP BY p.pid;
>><<
7.หากลุ่มโรคเรื้อรัง (15-59ปี) - ที่คัดกรองสุขภาพจิตแล้ว (2Q +St5) ปี 2563 >> (หาก 2Q,ST5 ว่างคือ ยังไม่คัดกรอง)
>>
SET @st = '2019-10-01';
set @n = 0;

SELECT
@n := @n + 1 AS 'NO',P1.PID,P1.FNAME,P1.LNAME,P1.PC_CODE,s1.dateserv AS 'date_2Q',s1.visitno AS 'visitno_2Q',s1.2Q,
s2.dateserv AS 'dates_st5',s2.visitno AS 'visitno_st5',s2.st5
FROM
(SELECT P.pid,P.fname,P.lname,GROUP_CONCAT(PC.CHRONICCODE)AS 'pc_CODE'
FROM person p
LEFT JOIN personchronic PC ON P.pid=PC.pid
WHERE getAgeYearNum(p.birth,'2019-10-01') BETWEEN '15'AND'59'
AND LEFT(pc.chroniccode,1) IN ('i','e')
AND pc.typedischart IN ('03','05') GROUP BY P.PID) AS P1
LEFT JOIN
(SELECT sp1.dateserv,sp1.pid,GROUP_CONCAT(sp1.ppspecial)AS '2Q',sp1.visitno
FROM f43specialpp sp1
WHERE sp1.ppspecial IN ('1B130','1B131') AND sp1.dateserv >= @st GROUP BY sp1.pid)AS S1 ON P1.PID=S1.PID
LEFT JOIN
(SELECT sp2.dateserv,sp2.pid,GROUP_CONCAT(sp2.ppspecial) AS 'st5',sp2.visitno
FROM f43specialpp sp2
WHERE sp2.ppspecial in ('1B132','1B133','1B134','1B139') AND sp2.dateserv >= @st GROUP BY sp2.pid)AS S2 ON P1.PID = S2.PID
ORDER BY s2.visitno DESC;
>><<
8.หากลุ่มผู้สูงอายุ-ที่คัดกรองสุขภาพจิตแล้ว (2Q +St5) ปี 2563 >> (หาก 2Q,ST5 ว่างคือ ยังไม่คัดกรอง)
>>
SET @start = '2019-10-01';
set @n = 0;

SELECT 
@n := @n + 1 AS 'NO',p1.idcard,p1.pid,p1.titlename,p1.fname,p1.lname,p1.age,p1.hno
,s1.dateserv AS date_2Q,s1.2Q,s1.visitno AS 'visitno_2Q',s2.dateserv AS 'date_st5',s2.st5,s2.visitno AS 'visitno_st5'
FROM (SELECT
p.idcard,
p.pid,
c.titlename,
p.fname,
p.lname,
getAgeYearNum(p.birth,CURDATE())AS'age',
h.hno,
right(h.villcode,2)AS 'moo'
FROM person p
INNER JOIN ctitle c ON p.prename=c.titlecode
INNER JOIN house h ON p.hcode=h.hcode
WHERE p.typelive IN ('1','3')
AND getAgeYearNum(p.birth,CURDATE())>='60'
AND  p.dischargetype = 9
GROUP BY p.pid) AS p1
LEFT JOIN
(SELECT sp1.dateserv,sp1.pid,GROUP_CONCAT(sp1.ppspecial)AS '2Q',sp1.visitno
FROM f43specialpp sp1
WHERE sp1.ppspecial IN ('1b0280','1B0281') AND sp1.dateserv >= @start GROUP BY sp1.pid)AS S1 ON P1.PID=S1.PID
LEFT JOIN
(SELECT sp2.dateserv,sp2.pid,GROUP_CONCAT(sp2.ppspecial) AS 'st5',sp2.visitno
FROM f43specialpp sp2
WHERE sp2.ppspecial in ('1B0286','1B0287','1B0289')AND sp2.dateserv >= @start GROUP BY sp2.pid)AS S2 ON P1.PID = S2.PID
GROUP BY p1.pid
ORDER BY st5 DESC,2Q DESC;
>><<
9.ตรวจกลุ่มโรคเรื้อรังที่บันทึกคัดกรองสุขภาพจิต  ให้รหัส 2Q ผิด ปี 2563 (เนื่องจากchronic อายุ >= 60 ปี ต้องให้ รหัส 2 Q เป็น '1B0280'  ไม่ใช่ '1B130' ) 
>>
SELECT
p.pcucodeperson,
p.pid,
p.prename,
p.fname,
p.lname,
p.birth,
f43.dateserv,
f43.ppspecial,
f43.visitno
FROM person p
INNER JOIN f43specialpp f43 ON p.pid =f43.pid
WHERE getAgeYearNum(p.birth,'2019-10-01') >='60'
AND f43.dateserv >='2019-10-01'
AND f43.ppspecial ='1B130';
>><<
10 .อัพเดด 1B130 เป็น '1B0280'
>>
UPDATE f43specialpp f43
INNER JOIN person p ON f43.pid = p.pid
SET f43.ppspecial = '1B0280'
WHERE getAgeYearNum(p.birth,'2020-07-01') >='60'
AND f43.dateserv >= '2020-07-01'
AND f43.ppspecial = '1B130'
AND f43.ppspecial <> '1B0280';
>><<
11.ตรวจกลุ่มโรคเรื้อรังที่บันทึกคัดกรองสุขภาพจิต  ให้รหัส st5 ผิด ปี 2563 (เนื่องจากchronic อายุ >= 60 ปี ต้องให้ รหัส st5 เป็น 1B0286' ,หรือ '1B0287' หรือ '1B0289  ไม่ใช่ 1B132' หรือ'1B133'หรือ'1B134'หรือ'1B139' ) 
>>
SELECT
p.pcucodeperson,
p.pid,
p.prename,
p.fname,
p.lname,
p.birth,
f43.dateserv,
f43.ppspecial,
f43.visitno
FROM person p
INNER JOIN f43specialpp f43 ON p.pid =f43.pid
WHERE getAgeYearNum(p.birth,'2019-10-01') >='60'
AND f43.dateserv >='2019-10-01'
AND f43.ppspecial IN ('1B132','1B133','1B134','1B139');
>><<
12.อัพเดด 1B132 เป็น '1B0286'
>> 
UPDATE f43specialpp f43
INNER JOIN person p ON f43.pid = p.pid
SET f43.ppspecial = '1B0286'
WHERE getAgeYearNum(p.birth,'2020-07-01') >='60'
AND f43.dateserv >= '2020-07-01'
AND f43.ppspecial = '1B132'
AND f43.ppspecial <> '1B0286';
>><<
13.ตรวจสอบและเพิ่มcase  1B132 โดยอ้างอิงจาก 1B130
 ใช้ในกรณีบันทึก ncdscreen โดยลง 2Q(1b130) แต่ลืมลง st5 (1B132)กลุ่ม 15-59 ปี
>>
CREATE OR REPLACE VIEW st5_ch1b132 AS SELECT  f4.pcucodeperson,
f4.pid,f4.dateserv,'1B132' AS 'ppspecial',f4.ppresult,f4.pcucode,f4.visitno,f4.servplace,f4.ppsplace,f4.provider,f4.dateupdate
FROM f43specialpp f4
INNER JOIN person p ON f4.pid = p.pid
WHERE f4.ppspecial IN ('1b130') AND f4.dateserv >= '2019-10-01'
AND p.typelive IN ('1','3')
AND getAgeYearNum(p.birth,CURDATE()) BETWEEN '15' AND '59'
AND  p.dischargetype = 9 
AND f4.pid NOT IN (SELECT f3.pid FROM f43specialpp f3 WHERE f3.ppspecial = '1b132'
AND f3.dateserv >= '2019-10-01' GROUP BY f3.pid);
 #insert into f43specialpp
 select * from st5_ch1b132;
>>
หมายเหตุ : หากต้องการ insert(case)  ให้นำเครื่องหมาย # ออกที่บรรทัด #insert into f43specialpp 
>><<
14.ตรวจสอบและเพิ่มcase อ้างอิง 1B0286 โดยอ้างอิงจาก 1B130
 ใช้ในกรณีบันทึก ncdscreen โดยลง 2Q(1b130) แต่ลืมลง st5 (1B0286)กลุ่ม >= 60 ปี
>>
CREATE OR REPLACE VIEW st5_ch1b130 AS SELECT  f4.pcucodeperson,
f4.pid,f4.dateserv,'1B0286' AS 'ppspecial',f4.ppresult,f4.pcucode,f4.visitno,f4.servplace,f4.ppsplace,f4.provider,f4.dateupdate
FROM f43specialpp f4
INNER JOIN person p ON f4.pid = p.pid
WHERE f4.ppspecial IN ('1b130') AND f4.dateserv >= '2019-10-01'
AND p.typelive IN ('1','3')
AND getAgeYearNum(p.birth,CURDATE())>='60'
AND  p.dischargetype = 9 
AND f4.pid NOT IN (SELECT f3.pid FROM f43specialpp f3 WHERE f3.ppspecial = '1b0286'
AND f3.dateserv >= '2019-10-01' GROUP BY f3.pid);
 #insert into f43specialpp
 select * from st5_ch1b130;
>>
หมายเหตุ : หากต้องการ insert(case)  ให้นำเครื่องหมาย # ออกที่บรรทัด #insert into f43specialpp 

15.คัดกรองสารเคมีในเกษตรกร
>>
SELECT
vt.pid,
vt.visitno,
f43.dateserv,
c.titlename,
p.fname,
p.lname,
p.sex,
vi.diagcode,
f43.ppspecial,
cp.ppname
FROM visit vt
INNER JOIN person p ON vt.pid = p.pid
INNER JOIN ctitle c ON p.prename=c.titlecode
INNER JOIN visitdiag vi ON vt.visitno = vi.visitno
INNER JOIN f43specialpp f43 ON vt.pid = f43.pid
INNER JOIN cspecialpp cp ON f43.ppspecial = cp.ppcode
WHERE vt.visitdate BETWEEN '2020-01-01' AND CURDATE()
AND LEFT(vi.diagcode,3) IN ('t60')
AND LEFT(f43.ppspecial,5) IN ('1b117');
>>
16.ผลรวมคัดกรองสารเคมีในเกษตรกร แยกตามความเสี่ยง
>>
SELECT
f43.dateserv,
f43.ppspecial,
cp.ppname,
sum(f43.ppspecial)AS 'รวม'
FROM visit vt
INNER JOIN person p ON vt.pid = p.pid
INNER JOIN ctitle c ON p.prename=c.titlecode
INNER JOIN visitdiag vi ON vt.visitno = vi.visitno
INNER JOIN f43specialpp f43 ON vt.pid = f43.pid
INNER JOIN cspecialpp cp ON f43.ppspecial = cp.ppcode
WHERE vt.visitdate BETWEEN '2020-01-01' AND CURDATE()
AND LEFT(vi.diagcode,3) IN ('t60')
AND LEFT(f43.ppspecial,5) IN ('1b117')
GROUP BY f43.ppspecial;
>>



link
1.การให้วัคซีนflu

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

แสดงความคิดเห็น