QOF-64 ส่วนกลาง 01 ร้อยละผู้ได้รับการคัดกรองและวินิจฉัยเป็นเบาหวาน

Update Delete

ID825
Parent ID61
Table Nameqof64_kpi01_dm
TitleQOF-64 ส่วนกลาง 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:='2021';
SET @start_d:=concat(@b_year-1,'-04-01');
SET @end_d:=concat(@b_year,'-03-31');
SET @start_a:='1945-04-01';
SET @end_a:='1985-03-31';


#---------------------------------------------
# ลบและสร้างตารางผลงานคัดกรองจาก ncdscreen
#---------------------------------------------
DROP TABLE IF EXISTS _qof64_kpi01_t_ncdscreen;
CREATE TABLE IF NOT EXISTS _qof64_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 _qof64_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 p.cid is not null and LENGTH(TRIM(p.cid))=13 and p.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 _qof64_kpi01_tmp_persondb;
CREATE TABLE IF NOT EXISTS _qof64_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 DISCHARGE = '9'
AND LENGTH(TRIM(cid))=13
AND SUBSTR(cid,2,1)<>'0'
#AND SUBSTR(cid,13,1)= mod11(cid)
ORDER BY concat(cid,if(typearea in(1,3),1,0),d_update) DESC
);

#---------------------------------------------
# ลบและสร้างตารางเป้าหมายและผลงานคัดกรอง
#---------------------------------------------
DROP TABLE IF EXISTS _qof64_kpi01_t_DM_screen;
CREATE TABLE IF NOT EXISTS _qof64_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 _qof64_kpi01_t_DM_screen
(
SELECT p.check_hosp HOSP_DB ,p.CID ,p.typearea,NULL,NULL,NULL,NULL,NULL,NULL
FROM _qof64_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 _qof64_kpi01_t_DM_screen s ,_qof64_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 _qof64_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 _qof64_kpi01_t_ncdscreen;
DROP TABLE IF EXISTS _qof64_kpi01_tmp_persondb;


SELECT
_qof64_kpi01_t_DM_screen.HOSP_DB,
'' AS areacode,
_qof64_kpi01_t_DM_screen.CID,
_qof64_kpi01_t_DM_screen.typearea,
_qof64_kpi01_t_DM_screen.H_screen,
_qof64_kpi01_t_DM_screen.date_serv,
_qof64_kpi01_t_DM_screen.bstest,
_qof64_kpi01_t_DM_screen.bslevel,
_qof64_kpi01_t_DM_screen.type_dx,
_qof64_kpi01_t_DM_screen.date_dx
FROM
_qof64_kpi01_t_DM_screen



#PROVIDER1_SQL#
Script Cron
Force Script Cron0
Active1
Client Office Type
Create Date2020-11-10 11:35:07
Last Update2020-11-10 12:57:04