QOF 02 ร้อยละผู้ได้รับการคัดกรองและวินิจฉัยเป็นความดันโลหิตสูง

Update Delete

ID790
Parent ID53
Table Name_sk_qof60_kpi02_ht
TitleQOF 02 ร้อยละผู้ได้รับการคัดกรองและวินิจฉัยเป็นความดันโลหิตสูง
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_kpi02_t_ncdscreen;
CREATE TABLE IF NOT EXISTS _qof61_kpi02_t_ncdscreen(
`HOSPCODE` varchar(5) NOT NULL DEFAULT '',
`PID` varchar(15) NOT NULL DEFAULT '',
`CID` varchar(13) NOT NULL,
`date_serv` date DEFAULT NULL,
`SBP_1` int(3) DEFAULT NULL,
`DBP_1` int(3) DEFAULT NULL,
PRIMARY KEY (`CID`),
KEY (`HOSPCODE`,`PID`,`CID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

#---------------------------------------------
# ใส่ข้อมูลผลงานคัดกรองแล้วใส่ cid ให้ทุกบริการ สุดท้ายตัดเหลือ cid เดียว # เรียงลำดับบริการแรก
#---------------------------------------------
INSERT IGNORE INTO _qof61_kpi02_t_ncdscreen
(SELECT p.HOSPCODE ,p.PID ,p.CID ,n.date_serv,n.SBP_1,n.DBP_1
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 (SBP_1>30 or DBP_1>20)
GROUP BY p.cid
ORDER BY DATE_SERV # เรียงลำดับบริการแรก
);

#---------------------------------------------
# ลบและสร้างตารางเป้าหมาย จาก t_person_db ยังไม่ตัด CID ซ้ำ
#---------------------------------------------
DROP TABLE IF EXISTS _qof61_kpi02_tmp_persondb;
CREATE TABLE IF NOT EXISTS _qof61_kpi02_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_kpi02_t_HT_screen;
CREATE TABLE IF NOT EXISTS _qof61_kpi02_t_HT_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,
`SBP_1` int(3) DEFAULT NULL,
`DBP_1` int(3) 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_kpi02_t_HT_screen
(
SELECT p.check_hosp HOSP_DB ,p.CID ,p.typearea,NULL,NULL,NULL,NULL,NULL,NULL
FROM _qof61_kpi02_tmp_persondb p
WHERE cid not in(SELECT cid FROM t_dmht WHERE type_dx in('01','03') and left(date_dx,10) < @start_d)
GROUP BY p.cid
);

#-----------------------------------
# นำผลงานคัดกรอง(รวมนอกเขต) เข้าจาก NCDSCREEN
#-----------------------------------
UPDATE _qof61_kpi02_t_HT_screen s ,_qof61_kpi02_t_ncdscreen n
SET s.H_screen=n.hospcode #สถานบริการที่ให้บริการก่อน
,s.date_serv = n.date_serv
,s.SBP_1 = n.SBP_1
,s.DBP_1 = n.DBP_1
WHERE s.cid=n.cid
;

#---------------------------------------------
# ใส่การวินิจฉัยผป.รายใหม่จาก t_dmht เฉพาะคนที่คัดกรองแล้วมีความเสี่ยง
#---------------------------------------------
UPDATE _qof61_kpi02_t_HT_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('01','03') and left(t_dmht.date_dx,10) BETWEEN @start_d and @end_d
and (SBP_1>140 or DBP_1>90)
;

#---------------------------------------------
# ลบทิ้งก่อน ใช้ร่วมกัน ทั้ง DM & HT
#---------------------------------------------
DROP TABLE IF EXISTS _qof61_kpi02_t_ncdscreen;
DROP TABLE IF EXISTS _qof61_kpi02_tmp_persondb;

SELECT * FROM _qof61_kpi02_t_HT_screen;

#PROVIDER1_SQL#
Script Cron
Force Script Cron0
Active1
Client Office Type
Create Date2017-06-12 10:47:27
Last Update2017-12-28 02:46:07