#SQL For JHCIS For PCC ตามโครงการ 3 หมอ …


#ปรับเพิ่มเติมเบอร์โทร อสม. และ Check ADL …. (ตรวจสอบข้อมูลในฐานว่าล่าสุดเป็น ADL ติดบ้าน,ติดเตียง หรือติดสังคม อย่างไร???) ไม่ต้องศรัทธา เอาไปลอง Run ได้เลย!! #กรณีเป็นผู้สูงอายุ แล้ว ADL ว่าง ก็เอาไปติดตามผลเพื่อนไมาบันทึกใน JHCIS ได้#SQL For JHCIS For PCC ตามโครงการ 3 หมอ … ***เอาเท่าที่ดึงออกมาช่วยได้เบื้องต้น ลองดูครับ ที่เหลือเติมเอาเองนะ ไปกรองใน Excel เอาเอง#จาก Web http://3doctor.hss.moph.go.th/ !! #CREATE INDEX pidvola ON house(pidvola);SELECT person.pid HN,CONCAT(ctitle.titlename,person.fname,’ ‘,person.lname) AS ‘ชื่อ – สกุล’,CONCAT(house.hno,’ ‘,’ม.’,’ ‘,village.villno)AS ‘ที่อยู่’,CONCAT_WS(‘-‘,SUBSTRING(person.idcard,1,1),SUBSTRING(person.idcard,2,4),SUBSTRING(person.idcard,6,5),SUBSTRING(person.idcard,11,2),SUBSTRING(person.idcard,13,1))AS ‘เลขประจำตัวประชาชน (CID)’,CONCAT(substr(person.birth,9,2),’-‘,substr(person.birth,6,2),’-‘,substr(person.birth,1,4)+543) AS ‘วันเดือนปีเกิด’,getAgeYearNum(person.birth,CURDATE()) AS ‘อายุ’,CONCAT(“‘”,getAgeYearNum(person.birth,CURDATE()),’/’,getAgeMonthNum(person.birth,CURDATE()),’/’,getAgeDayNum(person.birth,CURDATE())) AS ‘อายุ (ปี/เดือน/วัน)’,house.hno ‘บ้านเลขที่’,RIGHT(house.villcode,2) ‘หมู่’,#person.hcode,person.familyno,cfamilyposition.famposname,CASE WHEN person.familyposition=’1′ THEN ‘x’ ELSE NULL END AS ‘หัวหน้าครอบครัว’,CASE WHEN getAgeYearNum(person.birth,CURDATE()) >= 60 THEN ‘x’ ELSE NULL END AS ‘ผู้สูงอายุ’,CASE WHEN adl2.ppspecial is not null then ‘ติดเตียง’ WHEN adl1.ppspecial is not null then ‘ติดบ้าน’ ELSE ” END AS ‘ADL’,CASE WHEN adl3.ppspecial is not null then ‘ติดสังคม’ ELSE ” END AS ‘ADL ติดสังคม’,CONCAT(`user`.fullname) AS ‘นสค.’,pk.ksk AS ‘กสค.’,po.osm AS ‘อสม.’,pt.ot AS ‘เบอร์โทร อสม.’FROM personINNER JOIN ctitle ON person.prename = ctitle.titlecodeINNER JOIN house ON person.pcucodeperson = house.pcucode AND person.hcode = house.hcodeINNER JOIN village ON house.pcucode = village.pcucode AND house.villcode = village.villcodeLEFT OUTER JOIN f43specialpp ON person.pid=f43specialpp.pid AND person.pcucodeperson=f43specialpp.pcucodepersonLEFT OUTER JOIN f43specialpp adl1 ON person.pid=adl1.pid AND person.pcucodeperson=adl1.pcucodeperson AND adl1.dateserv >= ‘2019-10-01’ AND trim(adl1.ppspecial) = ‘1B1281’LEFT OUTER JOIN f43specialpp adl2 ON person.pid=adl2.pid AND person.pcucodeperson=adl2.pcucodeperson AND adl2.dateserv >= ‘2019-10-01’ AND trim(adl2.ppspecial) = ‘1B1282’LEFT OUTER JOIN f43specialpp adl3 ON person.pid=adl3.pid AND person.pcucodeperson=adl3.pcucodeperson AND adl3.dateserv >= ‘2019-10-01’ AND trim(adl3.ppspecial) = ‘1B1280’LEFT OUTER JOIN (SELECT po.pid,concat(cc.titlename,’ ‘,po.fname,’ ‘,po.lname) AS osm FROM person poLEFT JOIN ctitle cc ON po.prename=cc.titlecode)po ON house.pidvola=po.pidLEFT OUTER JOIN (SELECT pk.pid,concat(cc.titlename,’ ‘,pk.fname,’ , ‘,pk.lname) AS ksk FROM person pkLEFT JOIN ctitle cc ON pk.prename=cc.titlecode)pk ON house.headhealthhouse=pk.pidLEFT OUTER JOIN (SELECT pt.pid,concat(“‘”,pt.telephoneperson) AS ot FROM person pt)pt ON house.pidvola=pt.pidLEFT OUTER JOIN `user` ON house.usernamedoc=`user`.usernameLEFT OUTER JOIN cfamilyposition ON person.familyposition=cfamilyposition.famposcodeLEFT JOIN persontype ON person.pcucodeperson=persontype.pcucodeperson AND person.pid=persontype.pidWHERE SUBSTRING(house.villcode,7,2)<>’00’AND person.typelive IN (1,2,3) AND person.pid NOT IN (SELECT persondeath.pid FROM persondeath) #AND person.pcucodeperson=person.hossubGROUP BY person.pidORDER BY village.villno,house.hno;

SQL FOR JHCIS CALCULATEDRUG USE ในเดือนปัจจุบัน และย้อนหลัง 3 เดือน


SET @now=curdate();
SET @ds1=concat(date_format(@now,’%Y-%m-‘),1);
SET @ds2=last_day(@now);
SET @a1=date_add(@ds1,interval -1 month);
SET @a2=date_add(@ds2,interval -1 month);
SET @a3=date_add(@ds1,interval -2 month);
SET @a4=date_add(@ds2,interval -2 month);
SET @a5=date_add(@ds1,interval -3 month);
SET @a6=date_add(@ds2,interval -3 month);
SELECT CASE
WHEN cd.drugtype=’01’ THEN ‘ยาแผนปัจจุบัน’
WHEN cd.drugtype=’02’ THEN ‘หัตถการ’
WHEN cd.drugtype=’03’ THEN ‘วัสดุการแพทย์’
WHEN cd.drugtype=’04’ THEN ‘ยาฯคุมกำเนิด’
WHEN cd.drugtype=’05’ THEN ‘วัคซีน’
WHEN cd.drugtype=’06’ THEN ‘ค่าบริการฯ’
WHEN cd.drugtype=’07’ THEN ‘ค่าครวจ LAB’
WHEN cd.drugtype=’10’ THEN ‘ยาสมุนไพร’
WHEN cd.drugtype=’11’ THEN ‘เวชภัณซ์..มิใช่ยา’
WHEN cd.drugtype=’91’ THEN ‘อื่นๆ’
ELSE NULL END AS ‘ชนิดของยาและเวชภัณฑ์’
,cd.drugname ‘ชื่อย่และเวชภัณฑ์’,cd.cost ‘ราคาทุน’,cd.sell ‘ราคาขาย’,cd.pack ‘จำนวนบรรจุ(PACK)’,cdu.unitsellname ‘ขนาดบรรจุ’
,SUM(if(v.visitdate between @a5 and @ds2,vd.unit,0)) ‘จำนวนที่หมด 4 เดือน’
,CAST((SUM(vd.unit)/4)AS decimal(10,2)) AS ‘จำนวนการใช้เฉลี่ย’
,SUM(if(v.visitdate between @ds1 and @ds2,vd.unit,0)) ‘จำนวนที่ใช้ในเดือนปัจจุบัน’
,SUM(if(v.visitdate between @a1 and @a2,vd.unit,0)) ‘จำนวนที่ใช้ใน 1 เดือนที่ผ่านมา’
,SUM(if(v.visitdate between @a3 and @a4,vd.unit,0)) ‘จำนวนที่ใช้ใน 2 เดือนที่ผ่านมา’
,SUM(if(v.visitdate between @a5 and @a6,vd.unit,0)) ‘จำนวนที่ใช้ใน 3 เดือนที่ผ่านมา’
FROM visitdrug vd
LEFT OUTER JOIN cdrug cd ON vd.drugcode=cd.drugcode
LEFT OUTER JOIN visit v ON vd.visitno=v.visitno
LEFT OUTER JOIN cdrugunitsell cdu ON cd.unitsell=cdu.unitsellcode
WHERE v.visitdate between @a5 and @ds2
AND cd.drugtype IN (01,03,04,10,11)
GROUP BY cd.drugcode
ORDER BY cd.drugtype,cd.drugname;

SSOPxJHCIS


การส่งออกข้อมูลธุรกรรมผู้ป่วยนอกประกันสังคม SSOP สำหรับ JHCIS

#SQL For JHCIS ดูว่าคัดกรองมะเร็งเต้านม ปีงบประมาณ 2564


SELECT person.pcucodeperson,person.pid AS PID,CONCAT_WS(‘-‘,SUBSTRING(person.idcard,1,1),SUBSTRING(person.idcard,2,4),SUBSTRING(person.idcard,6,5),SUBSTRING(person.idcard,11,2),SUBSTRING(person.idcard,13,1))AS ‘IDCARD’,CONCAT(ctitle.titlename,person.fname,’ ‘,person.lname) AS ‘ชื่อ – สกุล’,CONCAT(house.hno,’ ‘,’หมู่ที่’,’ ‘,village.villno)AS ‘ที่อยู่’,date_format(person.birth,’%Y-%m-%d’) AS BIRTH,CONCAT(substr(person.birth,9,2),’-‘,substr(person.birth,6,2),’-‘,substr(person.birth,1,4)+543) AS ‘วันเดือนปีเกิด’,getAgeYearNum(person.birth,NOW()) AS ‘อายุ’,GROUP_CONCAT(DISTINCT f43specialpp.ppspecial) AS ‘SpecialPP’,MAX(visit.visitdate) AS ‘VisitDate’,GROUP_CONCAT(DISTINCT visit.visitno) AS ‘SEQ’,GROUP_CONCAT(DISTINCT visitdiag.diagcode) AS ‘DIAG’,CASE WHEN visitdiag.diagcode=’Z12.3′ THEN ‘/’ ELSE NULL END AS ‘Z12.3Check’FROM visitLEFT JOIN person ON person.pcucodeperson=visit.pcucode AND person.pid=visit.pidINNER JOIN visitdiag ON visitdiag.pcucode=visit.pcucode AND visitdiag.visitno=visit.visitno #AND visitdiag.diagcode =’Z12.3’INNER JOIN f43specialpp ON f43specialpp.pcucodeperson=visit.pcucode AND f43specialpp.visitno=visit.visitnoINNER JOIN ctitle ON person.prename = ctitle.titlecodeINNER JOIN house ON person.pcucodeperson = house.pcucode AND person.hcode = house.hcodeINNER JOIN village ON house.pcucode = village.pcucode AND house.villcode = village.villcodeWHERE visit.visitdate BETWEEN ‘2020-10-01’ AND ‘2021-09-30’#BETWEEN CONCAT(YEAR(CURDATE())-1,’10’,’01’) AND CONCAT(YEAR(CURDATE()),’09’,’30’)AND LEFT(f43specialpp.ppspecial,5) IN (‘1B003’)AND person.birth BETWEEN subdate(CURDATE(),INTERVAL 70 year) AND subdate(CURDATE(),INTERVAL 30 year) AND person.sex=’2’AND person.typelive in(1,3)and person.pid NOT IN ((SELECT persondeath.pid FROM persondeath))and person.nation=’99’GROUP BY visit.visitnoORDER BY person.birth DESC;/*——-จาก KPI HDCอัตราการคัดกรองมะเร็งเต้านมในสตรีอายุ 30 – 70 ปีB: เป้าหมาย ประชากรหญิงไทย อายุ 30-70 ปี ในเขตรับผิดชอบ ตัดความซ้ำซ้อนด้วยเลขบัตรประชาชน – การคำนวนอายุ คำนวนจากวันที่ 1 มกราคม ของปีงบประมาณลบด้วยวันเกิด – ในเขตรับผิดชอบ (TYPEAREA 1,3) – สัญชาติไทย (NATION 099) – ตัดความซ้ำซ้อนด้วยเลขบัตรประชาชน หมายถึง 1 เลขบัตรประชาชนจะเป็นเป้าหมาย ตามพื้นที่ที่ถูกขึ้นทะเบียน TYPEAREA 1,3 เพียงที่เดียวเท่านั้น A: ผลงานคัดกรองมะเร็งเต้านม คิดจาก แฟ้ม SPECIALPP และแฟ้ม DIAGNOSIS_OPD – กรณี 1 คนมีการคัดกรองทั้ง 2 แฟ้ม จะนับผลงาน 1 ว่าคนๆนั้นได้รับการคัดกรอง – คัดกรองด้วยตนเอง จะคิดจากแฟ้ม SPECIALPP รหัส 1B0030,1B0031,1B0034,1B0035 เท่านั้นตามความหมายของ BSE คลิกดูที่ Template – คัดกรองด้วยเจ้าหน้าที่ จะคิดจากแฟ้ม SPECIALPP รหัส 5 ขึ้นต้นด้วย 1B003 ทั้งหมด และแฟ้ม DIAGNOSIS_OPD ที่รหัส 4 หลักแรกเป็น Z123——-*/

28Wanwanae Pansopa, Sumitra Yanamthong และคนอื่นๆ อีก 26 คนแชร์ 11 ครั้งถูกใจแสดงความคิดเห็นแชร์

#SQL For JHCIS ดูว่าคัดกรองมะเร็งปากมดลูกในสตรี ไปได้เท่าไหร่แล้วในปีงบประมาณ 2558 ถึง ปัจจุบัน


SELECT person.pcucodeperson,person.pid AS PID,CONCAT_WS(‘-‘,SUBSTRING(person.idcard,1,1),SUBSTRING(person.idcard,2,4),SUBSTRING(person.idcard,6,5),SUBSTRING(person.idcard,11,2),SUBSTRING(person.idcard,13,1))AS ‘IDCARD’,CONCAT(ctitle.titlename,person.fname,’ ‘,person.lname) AS ‘ชื่อ – สกุล’,CONCAT(house.hno,’ ‘,’หมู่ที่’,’ ‘,village.villno)AS ‘ที่อยู่’,date_format(person.birth,’%Y-%m-%d’) AS BIRTH,CONCAT(substr(person.birth,9,2),’-‘,substr(person.birth,6,2),’-‘,substr(person.birth,1,4)+543) AS ‘วันเดือนปีเกิด’,getAgeYearNum(person.birth,NOW()) AS ‘อายุปัจจุบัน’,getAgeYearNum(person.birth,visit.visitdate) AS ‘อายุ ณ วันที่รับบริการ’,GROUP_CONCAT(DISTINCT f43specialpp.ppspecial) AS ‘SpecialPP’,CASE WHEN f43specialpp.ppspecial IN (‘1B0044′,’1B0048′,’1B0049′,’1B30′,’1B40’) THEN ‘/’ ELSE NULL END AS ‘PAP’,CASE WHEN f43specialpp.ppspecial IN (‘1B0040′,’1B0041′,’1B0042′,’1B0043′,’1B0045’) THEN ‘/’ ELSE NULL END AS ‘VIA’,GROUP_CONCAT(DISTINCT visit.visitdate) AS ‘VisitDate’,GROUP_CONCAT(DISTINCT visit.visitno) AS ‘SEQ’,GROUP_CONCAT(DISTINCT visitdiag.diagcode) AS ‘DIAG’,CASE WHEN visitdiag.diagcode IN (‘Z01.4′,’Z12.4’) THEN ‘/’ ELSE NULL END AS ‘Z01.4,Z12.4Check’FROM visitLEFT JOIN person ON person.pcucodeperson=visit.pcucode AND person.pid=visit.pidINNER JOIN visitdiag ON visitdiag.pcucode=visit.pcucode AND visitdiag.visitno=visit.visitno #AND visitdiag.diagcode =’Z12.3’INNER JOIN f43specialpp ON f43specialpp.pcucodeperson=visit.pcucode AND f43specialpp.visitno=visit.visitnoINNER JOIN ctitle ON person.prename = ctitle.titlecodeINNER JOIN house ON person.pcucodeperson = house.pcucode AND person.hcode = house.hcodeINNER JOIN village ON house.pcucode = village.pcucode AND house.villcode = village.villcodeWHERE visit.visitdate BETWEEN ‘2015-10-01’ AND CURDATE()#BETWEEN CONCAT(YEAR(CURDATE())-1,’10’,’01’) AND CONCAT(YEAR(CURDATE()),’09’,’30’)AND f43specialpp.ppspecial IN (‘1B0044′,’1B0048′,’1B0049′,’1B30′,’1B40′,’1B0040′,’1B0041′,’1B0042′,’1B0043′,’1B0045’)AND person.birth BETWEEN subdate(CURDATE(),INTERVAL 60 year) AND subdate(CURDATE(),INTERVAL 30 year) AND person.sex=’2’AND person.typelive in(1,3)and person.pid NOT IN ((SELECT persondeath.pid FROM persondeath))and person.nation=’99’GROUP BY visit.visitno,person.pidORDER BY visit.visitdate DESC;/*——-จาก KPI HDCเป้าหมาย หมายถึง ประชากรหญิงไทยอายุระหว่าง 30-60 ปีในปี 2558 ที่มี TYPEAREA 1,3 คำนวนจากแฟ้ม PERSON โดยปรับเกลี่ยให้เหลือคนที่เลขประชาชนไม่ซำ้กัน(เหลือเพียง 1 CID 1 Record ต่อจังหวัด)- การคำนวนอายุ ใช้ปีตั้งต้น ตั้งแล้วลบด้วยปีพ.ศ.เกิดผลงาน = ผลงานสะสมรอบ 5 ปี คำนวนจากแฟ้ม DIAGNOSIS_OPD หรือแฟ้ม SPECIALPP โดยคัดกรองที่หน่วยบริการใดก็ได้ภายในจังหวัด ผลงานจะปรากฏตามหน่วยบริการเจ้าของคน(Typeara 1,3 ที่หน่วยบริการใดผลงานขึ้นที่หน่วยนั้น)- PAP => 1B0044,1B0048,1B0049,1B30,1B40,Z014,Z124- VIA => 1B0040,1B0041,1B0042,1B0043,1B0045หญิงหนึ่งคนสามารถได้รับการคัดกรองทั้ง PAP และ VIA ได้ผลงานตามเป้าหมายนับถึงปัจจุบัน หมายถึง ผลการดำเนินการคัดกรองตามเป้าหมายปี 2558 ที่ได้รับการคัดกรองตั้งแต่ปี 2558 จนถึงปีของรายงานผลงานตามเป้าหมายที่ดำเนินการในปีปัจจุบัน หมายถึง ผลการดำเนินการคัดกรองตามเป้าหมายปีตั้งต้น ที่ได้รับการคัดกรองในปีของรายงานการคัดกรองไม่ตรงเป้าหมายในปีปัจจุบัน หมายถึง ผลการดำเนินการคัดกรองกลุ่มนอกเหนือเป้าหมายที่ได้รับการคัดกรองในปีของรายงาน เช่น อายุไม่ตรงกับกลุ่มเป้าหมาย , Typearea ไม่เป็น 1,3 ที่หน่วยบริการใดๆเลยในจังหวัด เป็นต้นการคัดกรองซ้ำในปีปัจจุบัน หมายถึง ผลการดำเนินการคัดกรองซึ่งผู้ที่คัดกรองได้รับการคัดกรองไปในปีก่อนรายงานแล้ว[เงื่อนไขการปรับเกลี่ยประชากร คือ หากมี record ในแฟ้ม person ซ้ากันด้วยเลขประชาชน จะยกคนนั้นให้หน่วยบริการที่มี D_UPDATE ล่าสุดโดยลำดับการนำเข้าจะเรียงตาม D_UPDATE DESC, TYPEAREA ASC ทำใน typearea 1,3 ก่อนแล้วจึงทำ TYPEAREA อื่นๆขณะนำเข้าจะตรวจสอบการซำ้ของ CID หากซ้ำจะไม่นำเข้า]——-*/

คิวรี่ UPDATE เพื่อยกเลิก วัคซีนให้ไม่มีใช้ในสถานบริการที่ใช้ JHCIS ตามเส้นสีแดงที่ยกเลิกไป ในตาราง Lookup


คิวรี่ UPDATE เพื่อยกเลิก วัคซีนให้ไม่มีใช้ในสถานบริการที่ใช้ JHCIS ตามเส้นสีแดงที่ยกเลิกไป ในตาราง Lookup
—————————————————–———————
#UPDATE cdrug EPI ยกเลิกปี 2560 ‘DT2′,’DT3′,’DT4′,’DT5′,’dTC’,’TT2′,’T13′,’TT4′,’TT5′,’DTANC1′,’DTANC2′,’DTANC3′,’DTANC4′,’DTANC5′

—————————————————–———————
UPDATE cdrug
SET cdrug.drugflag=’2′
WHERE cdrug.drugcode in (‘DT2′,’DT3′,’DT4′,’DT5′,’TT1′,’TT2′,’TT3′,’TT4′,’TT5′,’DTANC1′,’DTANC2′,’DTANC3′,’DTANC4′,’DTANC5′,’FLU2009’)

—————————————————–———————2017-03-22_9-38-48