คลัง SQL
รวบรวมคำสั่ง SQL ต่างไว้สำหรับการสืบค้นข้อมูล ใน HOSxP_PCU
เพื่อความสะดวกรวดเร็วทันต่อความต้องการข้อมูล เนื่องจากไม่สามารถจัดทำรีพอร์ทที่มีความสวยงามพร้อมพิมพ์ให้กับทุกงานได้ วิธีนี้จึงสะดวกกว่าวิธีใช้ copy ไปวางใน SQL Query แล้วสั่ง run จากนั้นสามารถคลิกขวาส่งออกเป็น ไฟล์รูปแบบต่าง ๆ ได้ตามความเหมาะสม
ดูรายชื่อและผลการประเมินภาวะโภชนาการเด็กอายุ 18 เดือน และ 30 เดือน
SELECT CONCAT(p.pname,p.fname," ",p.lname) as ptname,p.person_id,n.nutrition_date,n.body_weight,n.height,n.age_y,n.age_m,l.`name` as nutritionname,h.`name` as heightname,b.`name` as bminame,
d.person_nutrition_childdevelop_type_name
FROM person_epi_nutrition n
LEFT OUTER JOIN person_epi w on w.person_epi_id=n.person_epi_id
LEFT OUTER JOIN person p on p.person_id=w.person_id
LEFT OUTER JOIN bmi_level b on b.bmi_level=n.bmi_level
LEFT OUTER JOIN height_level h on h.height_level=n.height_level
LEFT OUTER JOIN nutrition_level l on l.nutrition_level=n.nutrition_level
LEFT OUTER JOIN person_nutrition_childdevelop_type d on d.person_nutrition_childdevelop_type_id=n.person_nutrition_childdevelop_type_id
WHERE n.nutrition_date BETWEEN "2014-10-01" and "2015-06-30" and n.age_y BETWEEN "1" and "2" and n.age_m = "6"
ตรวจสอบคำนำหน้าชื่อในตาราง person ที่ไม่ตรงกับตารางที่ส่งออกคำนำหน้าชื่อ (pname)
select person_id,patient_hn,cid,pname,fname,lname from person where pname not in(select name from pname)คนนอกเขตที่ประเภทการอยู่อาศัยเป็น 1 3 และ สถานะยังเป็นอาศัยอยู่
SELECT p.person_id,p.cid,CONCAT(p.pname,p.fname," ",p.lname) AS `name`,
h.address,v.village_moo, concat( timestampdiff(year,birthdate,NOW() ) ," y ",
timestampdiff(month,birthdate,NOW() )-(timestampdiff(year,birthdate,NOW() )*12) ," m ",
timestampdiff(day,date_add(birthdate,interval (timestampdiff(month,birthdate,NOW() )) month),NOW() ) ," d ") as age,
Concat( DATE_FORMAT(p.birthdate , '%d' ), '-', DATE_FORMAT( p.birthdate , '%m' ) , '-', DATE_FORMAT( p.birthdate , '%y' )+2543 ) AS birth_day,
p.house_regist_type_id,p.person_discharge_id
FROM person p
left JOIN house h ON p.house_id = h.house_id
left JOIN village v ON v.village_id = h.village_id
WHERE if( p.house_regist_type_id IN ('1','3') ,p.person_discharge_id in ('3','2'),null)
ORDER BY v.village_moo,h.address DESC
วันฉีดวัคซีนไม่สัมพันธ์ กับวันคลอด
select a.person_wbc_id,p.person_id,p.cid,p.pname,p.fname,p.lname,p.birthdate
,cast(group_concat(distinct s.service_date) as char(100)) service_date
from person_wbc a
join person_wbc_service s on s.person_wbc_id=a.person_wbc_id
join person_wbc_vaccine_detail v on v.person_wbc_service_id=s.person_wbc_service_id
join person p on p.person_id=a.person_id
where s.service_date<p.birthdate
group by a.person_wbc_id
วันเยี่ยมหลังคลอด ไม่สัมพันธ์กับวันคลอด
select anc.person_anc_id,p.person_id,p.pname,p.fname,p.lname
,anc.labor_date
,cast(group_concat(distinct c.care_date) as char(100)) care_date
from person_anc anc
join person p on p.person_id=anc.person_id
left join person_anc_preg_care c on c.person_anc_id=anc.person_anc_id
where c.care_date<=anc.labor_date
group by anc.person_anc_id
ดู Vital Sign ,BMI คนในเขตที่เคยมารับบริการ
SELECT p.person_id,p.cid,
CONCAT(p.pname,p.fname," ",p.lname) AS `name`,h.address,
v.village_moo AS V_NO,Year(Now())-Year(p.birthdate) AS age,
s.`name` AS sex_m,max(o.vstdate) day_visit,
op.bw,op.height,op.bps,op.bpd,
op.temperature,op.rr,
op.pulse,op.bmi,
DATE_FORMAT(NOW(),'%d-%m-%Y %H:%i:%s') AS day_proccss
FROM person AS p
LEFT JOIN house AS h ON p.house_id = h.house_id
LEFT JOIN village AS v ON v.village_id = h.village_id
INNER JOIN ovst AS o ON p.patient_hn = o.hn
INNER JOIN sex AS s ON s.`code` = p.sex
INNER JOIN ovstdiag AS ov ON ov.vn = o.vn
INNER JOIN opdscreen AS op ON op.vn = o.vn
INNER JOIN icd101 AS ic ON ic.`code` = ov.icd10
INNER JOIN opitemrece_summary ops on ops.vn = o.vn
where v.village_moo <> 0
GROUP BY p.person_id
order by v.village_moo,h.address asc
นับผู้รับบริการ คน ครั้ง แยกเป็นรายปี
select year(o.vstdate)+543+if(month(o.vstdate)>9,1,0) year
,count(distinct p.cid) 'คน'
,count(distinct if(v.count_in_year=0,p.cid,null)) 'ใหม่ในปี'
,count(p.cid) 'ครั้ง'
from ovst o
join person p on p.patient_hn=o.hn
join vn_stat v on o.vn=v.vn
where o.vstdate between '2005-10-1' and '2015-9-30'
group by year
order by year desc
หารายชื่อจาก บช. 1 ที่ควรมีชื่อใน บช. 3
SELECT p.person_id, p.cid, p.pname, p.fname, p.lname, p.birthdate,
TIMESTAMPDIFF(YEAR,p.birthdate,NOW()) AS Age,
v.village_moo, h.address, h.road
FROM person AS p LEFT JOIN house AS h ON h.house_id = p.house_id
LEFT JOIN village AS v ON v.village_id = h.village_id
WHERE 1=1 AND (p.death <> 'Y' OR p.death IS NULL)
AND p.house_regist_type_id IN ('1','3')
AND TIMESTAMPDIFF(YEAR,p.birthdate,NOW())= 0
AND v.village_moo <> 0
AND p.person_id NOT IN (SELECT person_id FROM person_wbc)
หารายชื่อที่ควรมีใน บช. 4
SELECT p.person_id, p.cid, p.pname, p.fname, p.lname, p.birthdate,
TIMESTAMPDIFF(YEAR,p.birthdate,NOW()) AS Age,
v.village_moo, h.address, h.road
FROM person AS p LEFT JOIN house AS h ON h.house_id = p.house_id
LEFT JOIN village AS v ON v.village_id = h.village_id
WHERE 1=1 AND (p.death <> 'Y' OR p.death IS NULL)
AND p.house_regist_type_id IN ('1','3')
AND TIMESTAMPDIFF(YEAR,p.birthdate,NOW())BETWEEN 1 AND 3
AND v.village_moo <> 0
AND p.person_id NOT IN (SELECT person_id FROM person_epi)
ตรวจสอบรหัสโรคที่มีการยกเลิกการใช้งานทั้ง 27 ตัว
SELECT p.person_id,p.cid,CONCAT(p.pname,p.fname," ",p.lname) AS `name`,
h.address,v.village_moo, Year(Now())-Year(p.birthdate) as age,s.`name` as sex_m,
DATE_FORMAT(ov.vstdate,'%d-%m-%Y') as day_service,GROUP_CONCAT(DISTINCT concat(ov.icd10,'(',ov.diagtype,')')) as icd10_T ,ov.icd10
,ic.tname,ov.diagtype,
DATE_FORMAT(NOW(),'%d-%m-%Y %H:%i:%s') AS day_proccss
FROM person p
left JOIN house h ON p.house_id = h.house_id
left JOIN village v ON v.village_id = h.village_id
INNER JOIN ovst o ON p.patient_hn = o.hn
INNER JOIN sex s ON s.`code` = p.sex
INNER JOIN ovstdiag ov ON ov.vn = o.vn and ov.vstdate between '2014-10-01' and '2015-09-30'
INNER JOIN icd101 ic on ic.`code`= ov.icd10
where
ov.icd10 in ("A09","K350","K351","K359","N180","N188"
,"B9680","B9688","C832","C834","C836","C842","C843","C850",
"C881","C912","C941","C945","C952","C961","C963","D463",
"D752","D760","H547","K511","L89")
คำสั่งตรวจสอบกลุ่มเป้าหมายและผลงานรณรงค์ฉีดวัคซีน MR แบบที่ 4 ดึงจากการบันทึกหน้า one stop service ด้วย
###########################
select p.pname,p.fname,p.lname,p.birthdate ,h.address ,v.village_moo
,(select vaccine_date from (select person_id,vaccine_date
from
person_vaccine_list as pl
join person_vaccine as pv on pv.person_vaccine_id=pl.person_vaccine_id
where pv.export_vaccine_code='073'
union
select p.person_id,v.vstdate as vaccine_date from
ovst_vaccine as ov,vn_stat as v ,person as p ,person_vaccine as pv
where v.vn=ov.vn and v.hn=p.patient_hn
and pv.person_vaccine_id=ov.person_vaccine_id
and pv.export_vaccine_code='073'
union
select person_id,vaccine_date
from
person_vaccine_elsewhere as pl
join person_vaccine as pv on pv.person_vaccine_id=pl.person_vaccine_id
where pv.export_vaccine_code='073' ) as p_mmr
where p_mmr.person_id=p.person_id) as mmr_date ,
(select concat(person.pname,person.fname," ",person.lname) as name
from
village_organization as vo
join village_organization_member as vm on vm.village_organization_id = vo.village_organization_id
join village_organization_member_service as vs on vm.village_organization_mid = vs.village_organization_mid
join person on person.person_id = vm.person_id
where
vo.village_organization_name = "อสม" and vs.house_id=p.house_id
limit 1) as osm
from person as p
,house as h
,village as v
where
p.house_id=h.house_id
and v.village_id=p.village_id
and p.birthdate between '2008-06-01' and '2012-01-31'
and p.village_id<>1
and p.house_regist_type_id in ("1","2","3")
and p.death<>"Y"
order by v.village_id
ความคิดเห็น
แสดงความคิดเห็น