QOF 01 ร้อยละผู้ได้รับการคัดกรองและวินิจฉัยเป็นเบาหวาน
ID | 792 |
---|---|
Parent ID | 53 |
Table Name | _sk_qof60_kpi01_dm |
Title | QOF 01 ร้อยละผู้ได้รับการคัดกรองและวินิจฉัยเป็นเบาหวาน |
Description | |
Script | #SQL_OPTIONS# PROVIDERS=1 PROVIDER1=43STD PROVIDER1_VALIDATE_TABLES=accident,admission,anc,appointment SCRIPT_FLOW=SQL #SQL_OPTIONS# #PROVIDER1_SQL# SET @provcode = :provcode; SET @rep_year = :rep_year; SET @hoscode = :hoscode; SET @hosname = :hosname; SET @hostype = :hostype; SET @address = :address; SET @subdistcode = :subdistcode; SET @distcode = :distcode; SET @level_service = :level_service; SET @b_year:='2018'; SET @start_d:=concat(@b_year-1,'-04-01'); SET @end_d:=concat(@b_year,'-03-31'); SET @start_a:='1942-04-01'; SET @end_a:='1982-03-31'; #--------------------------------------------- # ลบและสร้างตารางผลงานคัดกรองจาก ncdscreen #--------------------------------------------- DROP TABLE IF EXISTS _qof61_kpi01_t_ncdscreen; CREATE TABLE IF NOT EXISTS _qof61_kpi01_t_ncdscreen( `HOSPCODE` varchar(5) NOT NULL DEFAULT '', `PID` varchar(15) NOT NULL DEFAULT '', `CID` varchar(13) NOT NULL, `date_serv` date DEFAULT NULL, `bstest` varchar(1) DEFAULT NULL, `bslevel` INT(6) DEFAULT NULL, PRIMARY KEY (`CID`), KEY (`HOSPCODE`,`PID`,`CID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; #--------------------------------------------- # ใส่ข้อมูลผลงานคัดกรองแล้วใส่ cid ให้ทุกบริการ สุดท้ายตัดเหลือ cid เดียว # เรียงลำดับบริการแรก #--------------------------------------------- INSERT IGNORE INTO _qof61_kpi01_t_ncdscreen (SELECT p.HOSPCODE ,p.PID ,p.CID ,n.date_serv,n.bstest,n.bslevel FROM person p INNER join ncdscreen n on n.HOSPCODE=p.HOSPCODE and n.PID=p.PID where BIRTH BETWEEN @start_a and @end_a and NATION='099' and cid is not null and LENGTH(TRIM(cid))=13 and cid<>'0000000000000' and DATE_SERV BETWEEN @start_d and @end_d and (BSTEST in(1,2,3,4) and BSLEVEL > 0) GROUP BY p.cid ORDER BY DATE_SERV # เรียงลำดับบริการแรก ); #--------------------------------------------- # ลบและสร้างตารางเป้าหมาย จาก t_person_db ยังไม่ตัด CID ซ้ำ #--------------------------------------------- DROP TABLE IF EXISTS _qof61_kpi01_tmp_persondb; CREATE TABLE IF NOT EXISTS _qof61_kpi01_tmp_persondb( SELECT check_hosp,pid,cid,typearea from t_person_db where BIRTH BETWEEN @start_a and @end_a and NATION='099' and cid is not null and cid<>'0000000000000' and LENGTH(TRIM(cid))=13 ORDER BY concat(cid,if(typearea in(1,3),1,0),d_update) DESC # เรียงลำดับด้วยคนในเขตฯก่อน หากtypearea1,3 ซ้ำซ้อน ค่อยเรียงด้วย d_update ล่าสุด ); #--------------------------------------------- # ลบและสร้างตารางเป้าหมายและผลงานคัดกรอง #--------------------------------------------- DROP TABLE IF EXISTS _qof61_kpi01_t_DM_screen; CREATE TABLE IF NOT EXISTS _qof61_kpi01_t_DM_screen( `HOSP_DB` varchar(5) NOT NULL DEFAULT '', `CID` varchar(13) NOT NULL, `typearea` varchar(1) DEFAULT NULL, `H_screen` varchar(5) DEFAULT NULL, `date_serv` varchar(255) DEFAULT NULL, `bstest` varchar(1) DEFAULT NULL, `bslevel` int(6) DEFAULT NULL, `type_dx` varchar(2) DEFAULT NULL, `date_dx` varchar(100) DEFAULT NULL, PRIMARY KEY (`CID`), KEY (`HOSP_DB`,`CID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; #--------------------------------------------- # ใส่กลุ่มเป้าหมายทั้งหมด แล้วตัดให้เหลือ cid เดียว #--------------------------------------------- INSERT IGNORE INTO _qof61_kpi01_t_DM_screen ( SELECT p.check_hosp HOSP_DB ,p.CID ,p.typearea,NULL,NULL,NULL,NULL,NULL,NULL FROM _qof61_kpi01_tmp_persondb p WHERE cid not in(SELECT cid FROM t_dmht WHERE type_dx in('02','03') and left(date_dx,10) < @start_d) GROUP BY p.cid ); #----------------------------------- # นำผลงานคัดกรอง(รวมนอกเขต) เข้าจาก NCDSCREEN #----------------------------------- UPDATE _qof61_kpi01_t_DM_screen s ,_qof61_kpi01_t_ncdscreen n SET s.H_screen=n.hospcode #สถานบริการที่ให้บริการก่อน ,s.date_serv = n.date_serv ,s.bstest = n.bstest ,s.bslevel = n.bslevel WHERE s.cid=n.cid ; #--------------------------------------------- # ใส่การวินิจฉัยผป.รายใหม่จาก t_dmht เฉพาะคนที่คัดกรองแล้วมีความเสี่ยง #--------------------------------------------- UPDATE _qof61_kpi01_t_DM_screen s ,t_dmht SET s.type_dx=t_dmht.type_dx ,s.date_dx=t_dmht.date_dx WHERE s.cid=t_dmht.cid and t_dmht.type_dx in('02','03') and left(t_dmht.date_dx,10) BETWEEN @start_d and @end_d and s.bslevel >= 100 ; #--------------------------------------------- # ลบทิ้งก่อน ใช้ร่วมกัน ทั้ง DM & HT #--------------------------------------------- DROP TABLE IF EXISTS _qof61_kpi01_t_ncdscreen; DROP TABLE IF EXISTS _qof61_kpi01_tmp_persondb; SELECT * FROM _qof61_kpi01_t_DM_screen; #PROVIDER1_SQL# |
Script Cron | |
Force Script Cron | 0 |
Active | 1 |
Client Office Type | |
Create Date | 2017-06-01 09:05:28 |
Last Update | 2017-12-28 02:44:41 |
- Home
- About
- Privacy Policy
- Terms of Use
- Contact Us
© 2015. All Rights Reserved.