พิมพ์
หมวด: แฟ้มบริการกึ่งสำรวจ
ฮิต: 1754

ancB2

โครงสร้าง แฟ้ม ANC

ancg

 

/*GRAVIDA ครรภ์ที่ ผิดพลาด*/

SELECT

person_anc.anc_register_date,

person.pname,

concat(person.fname,    space(1),person.lname)as 'person_name',

person_anc.preg_no,

person_anc.lmp,

person_anc.edc,

person_anc.labor_date

FROM

person_anc

INNER JOIN person ON person.person_id = person_anc.person_id

WHERE

preg_no NOT BETWEEN 1

AND 15

OR preg_no IS NULL

#============

ตัวอย่าง

anc_register_date pname person_name preg_no lmp edc labor_date
19/1/2010 น.ส. บังอร xxx 10/5/2009 17/2/2010 29/1/2010
2/3/2010 น.ส. เกศินี xxx 28/11/2009 4/9/2010 12/9/2010
23/3/2010 นาง ปัทมา xxx 14/11/2009 21/8/2010
4/12/2010 น.ส. ลักขณา xxx 26/2/2010 3/12/2010 29/11/2010
9/2/2012 นาง พรนิพา xxx 20/5/2011 27/2/2012 9/2/2012

ANCNO1  ครั้งที่ 1 เมื่ออายุครรภ์ 12 สัปดาห์

ANCNO2  ครั้งที่ 2 เมื่ออายุครรภ์ 18 สัปดาห์

ANCNO3  ครั้งที่ 3 เมื่ออายุครรภ์ 26 สัปดาห์

ANCNO4 ครั้งที่ 4 เมื่ออายุครรภ์ 32 สัปดาห์

ANCNO5  ครั้งที่ 5 เมื่ออายุครรภ์ 38 สัปดาห์

หมายเหตุ : กรณีอายุครรภ์ไม่อยู่ในช่วงของการฝากครรภ์ให้บันทึกเฉพาะอายุครรภ์

บันทึกช่วงครรภ์ กรณีมาตรงช่วงการนัดฝากครรภ์เท่านนั้

ancno

ได้จากการคำนวน LMP กับ วันที่รับบริการ ANC (เครื่องคำนวนให้)


/*GA อายุครรภ์ ผิดพลาด */

SELECT

pa.anc_register_date,

p.pname,

concat(p.fname,space(1),p.lname)as 'person_name',

pa.preg_no,

pa.current_preg_age as 'GA อายุครรภ์'

FROM

person_anc AS pa

INNER JOIN person AS p ON p.person_id = pa.person_id

INNER JOIN house as h on h.house_id =p.house_id

INNER JOIN village as v on v.village_id = h.village_id

WHERE pa.current_preg_age not BETWEEN '1'

and '48' or pa.current_preg_age is null

ORDER BY v.village_id;

#=================

ตัวอย่าง

anc_register_date pname person_name preg_no GA อายุครรภ์
21/2/2012 นาง พรรณพร xxx 2 -5846
4/12/2012 น.ส. สุพัตรา xxx 2 -5885
17/7/2012 น.ส. สุพรรษา xxx 2 -64
27/12/2016 น.ส. ฐิติพร xxx 3 -6096
11/10/2016 น.ส. วนิดา xxx 0

/*ANCRESULT   ผลการตรวจ1 = ปกติ, 2 = ผิดปกติ, 9 = ไม่ทราบ */

ancresult

/*ANCRESULT  ผลการตรวจ  1 = ปกติ, 2 = ผิดปกติ, 9 = ไม่ทราบ */

/*error AN1142 anc result กรณีบริการที้อื่น */

SELECT

person.cid,

person.pname,

concat(person.fname,space(1),person.lname) AS 'mother_name',

pp.anc_result,

pp.precare_date,

person_anc.preg_no as 'ครรภ์ที่'

FROM

person_anc_other_precare AS pp

LEFT JOIN person_anc

ON person_anc.person_anc_id = pp.person_anc_id

LEFT JOIN person

ON person.person_id = person_anc.person_id

WHERE

      anc_result NOT IN ('1', '2', '9')

#==========================


ตัวอย่าง

cid pname mother_name anc_result precare_date ครรภ์ที่
8888888888888 น.ส. ธนะนันท์ xxx 31 8/10/2014 1
8888888888888 น.ส. ธนะนันท์ xxx 32 15/10/2014 1
8888888888888 น.ส. สุนิสา xxx 0 8/12/2014 1
8888888888888 น.ส. ชนาทิพย์ xxx 0 24/6/2014 1

/*error AN1142 anc result กรณีบริการที้อื่น */

/*หญิงหลังคลอดได้รับการดูแลครบ 3 ครั้ง */

SELECT

p.pname,

concat(p.fname,space(1),p.lname) AS ptname,

a.labor_date,a.post_labor_service1_date,

a.post_labor_service2_date,

a.post_labor_service3_date

from person_anc a

left outer join person p on p.person_id = a.person_id

left outer join house h on h.house_id = p.house_id

left outer join village v on v.village_id = p.village_id

left outer join labor_status ats on ats.labor_status_id = a.labor_status_id

left outer join thaiaddress t on t.addressid = v.address_id

where v.village_name not like 'นอกเขต%'

and (a.discharge <> 'Y' or a.discharge IS NULL)

and a.post_labor_service1_date > a.labor_date

and a.post_labor_service2_date >a.post_labor_service1_date

and a.post_labor_service3_date > a.post_labor_service2_date

order by v.village_moo

#=========================

/*ฝากครรภ์ครบ 5 ครั้ง ตามเกณท์  เฉพาะที่ สถานบริการอื่น */

SELECT

p.pname,

concat(p.fname,space(1),p.lname)as 'mother_name',

p.cid,

pop.person_anc_id,

Sum(

IF (precare_no = '1',

precare_no,0)

) AS ANCNO_1,

Sum(

IF (precare_no = '2',

precare_no,0)

) AS ANCNO_2,

Sum(

IF (precare_no = '3',

precare_no,0)

) AS ANCNO_3,

Sum(

IF (precare_no = '4',

precare_no,0)

) AS ANCNO_4,

Sum(

IF (precare_no = '5',

precare_no,0)

) AS ANCNO_5

FROM

person_anc_other_precare AS pop

INNER JOIN person_anc AS pa

ON pa.person_anc_id = pop.person_anc_id

INNER JOIN person AS p

ON p.person_id = pa.person_id

GROUP BY

pop.person_anc_id

HAVING

Sum(

IF (precare_no = '1',

precare_no,0)

) = '1'

AND Sum(

IF (precare_no = '2',

precare_no,0)

) = '2'

AND Sum(

IF (precare_no = '3',

precare_no,0)

) = '3'

AND Sum(

IF (precare_no = '4',

precare_no,0)

) = '4'

AND Sum(

IF (

precare_no = '5',

precare_no,0)

) = '5'

#===================

ต้วอย่าง

pname

mother_name

cid

person_anc_id

ANCNO_1

ANCNO_2

ANCNO_3

ANCNO_4

ANCNO_5

น.ส.

สุวิมล xxx

1721000048847

2700

1

2

3

4

5

น.ส.

พรทิพย์ xxx

1100700531812

2704

1

2

3

4

5

น.ส.

นารถนภา xxx

1720800114231

2777

1

2

3

4

5

น.ส.

นิตยา xxx

1720800017139

3740

1

2

3

4

5


/*วันที่ดูแลหลังคลอด มาก่อนวันที่คลอด*/

SELECT

p.pname,

concat(p.fname,space(1), p.lname) AS 'person_name',

pa.preg_no AS 'ครรภ์ที่',

pa.labor_date AS 'วันคลอด',

pa.post_labor_service1_date AS 'ดูแลหลังคลอดครั้งที่1',

pa.edc AS 'กำหนดคลอด'

FROM

person_anc AS pa

INNER JOIN person AS p ON p.person_id = pa.person_id

WHERE

post_labor_service1_date < labor_date

OR (

post_labor_service2_date < labor_date

OR post_labor_service3_date < labor_date

)

ORDER BY

p.person_id,

pa.labor_date

#===================

ตัวอย่าง

pname person_name ครรภ์ที่ วันคลอด ดูแลหลังคลอดครั้งที่1 กำหนดคลอด
นาง ศรีนวน xxx 3 23/5/2010 24/5/2010 25/5/2010
น.ส. รถสุคล xxx 2 30/5/2010 21/5/2010 10/5/2010
น.ส. จินตนา xxx 2 4/5/2010 5/4/2010 22/4/2010
น.ส. วาสนา xxx 4 17/8/2010 16/8/2010 23/8/2010

/*ยานี้ใช้ในโครงการให้ยาเสริมไอโอดีน */

SELECT

icode,NAME,dosageform

,show_notify_text

FROM

drugitems

WHERE

istatus = 'Y'

AND DID IN (

'201120320037726221781506',

'201110100019999920381199',

'101110000003082121781506',

'201110100019999920381341',

'201110100019999921881341');

#=======================

ตัวอย่าง

icode NAME dosageform show_notify_text
1540001 Triferdine TABLETS ยานี้ใช้ในโครงการให้ยาเสริมไอโอดีนในหญิงตั้งครรภ์และให้นมบุตรเท่านั้น
1540002 Iodine GPO tab TABLETS ยานี้ใช้ในโครงการให้ยาเสริมไอโอดีนในหญิงตั้งครรภ์และให้นมบุตร เฉพาะรายที่เป็นโรคทาลาสซีเมียเท่านั้น

/*เรียกดูประวัติการรับยาเสริมไอโอดีน สตรีที่ฝากครรภ์*/

SET @date1 = '2013-01-01' ,@date2 := '2013-12-31';

#SET @Hnanc = '0055886';

SELECT

p.pname

,concat(p.fname,space(1),p.lname)as'mother_name'

,icode,qty as'จำนวน',vstdate

FROM

opitemrece

inner join patient as p on p.hn =opitemrece.hn

WHERE

icode In (

SELECT

icode

FROM

drugitems

WHERE

istatus = 'Y'

AND DID IN (

'201120320037726221781506',

'201110100019999920381199',

'101110000003082121781506',

'201110100019999920381341',

'201110100019999921881341')

)

AND vstdate BETWEEN @date1

AND @date2

#AND hn =@Hnanc;

#====================

ตัวอย่าง

pname mother_name icode จำนวน vstdate
น.ส. นุสรา ตรงดี 1540001 1 24/7/2013
น.ส. ธัญญาลักษณ์ รัตนชาติชน 1540001 1 12/2/2013
น.ส. ธิดา ทองรอด 1540001 1 30/10/2013
น.ส. กาญจนา หนองบัว 1540001 1 15/10/2013


/*บัญชี 2 ไม่ได้รับยาเสริมไอโอดีน */

set @date1='2015-10-01' ,@date2 = '2016-09-30';

SELECT

p.cid,p.pname ,

concat(p.fname ,space(1),p.lname )as 'person_name',

pn.preg_no,

pn.lmp,pn.labor_date,

if(pn.labor_date is null ,TIMESTAMPDIFF(week,pn.lmp,CURDATE())

,TIMESTAMPDIFF(week,pn.lmp,pn.labor_date))as 'preg_age',

'      ยังไม่ได้รับ iodine',

timestampadd(month,6,pn.labor_date)as 'รับได้ถึง'

FROM person_anc as pn

INNER JOIN person as p on p.person_id = pn.person_id

where timestampadd(month,6,pn.labor_date) >=@date1

and p.patient_hn not in (

SELECT DISTINCT

o.hn

FROM

opitemrece as o

inner join patient as p on p.hn = o.hn

inner join drugitems as d on d.icode = o.icode

WHERE d.did in

(

'201120320037726221781506',

'201110100019999920381199',

'101110000003082121781506',

'201110100019999920381341',

'201110100019999921881341'

)

and o.vstdate BETWEEN @date1 and @date2

GROUP BY p.hn

)

#=================

ตัวอย่าง

cid pname person_name preg_no lmp labor_date preg_age ยังไม่ได้รับ iodine รับได้ถึง
8888888888888 น.ส. กิตติยา xxx 2 24/8/2014 25/5/2015 39       ยังไม่ได้รับ iodine 25/11/2015
8888888888888 น.ส. กานดา xxx 1 23/9/2014 21/6/2015 38       ยังไม่ได้รับ iodine 21/12/2015
8888888888888 น.ส. โสรญา xxx 3 12/9/2014 17/6/2015 39       ยังไม่ได้รับ iodine 17/12/2015
8888888888888 นาง อำพร xxx 3 25/9/2014 1/7/2015 39       ยังไม่ได้รับ iodine 1/1/2016

/*male pregnancy*/

SELECT

person_anc_service.anc_service_date,

patient.pname,

concat(

patient.fname,

space(1),

patient.lname

) AS mother_name,

patient.sex,sex.name as'เพศ',

anc_service_type.anc_service_type_name

FROM

person_anc_service

left JOIN ovst ON ovst.vn = person_anc_service.vn

left JOIN patient ON ovst.hn = patient.hn

left JOIN sex on sex.code = patient.sex

INNER JOIN anc_service_type

ON person_anc_service.anc_service_type_id = anc_service_type.anc_service_type_id

WHERE

      sex.name ='ชาย'

#==================

ตัวอย่าง

anc_service_date pname mother_name sex เพศ anc_service_type_name
17/11/2009 นาง วิลาวัลย์ xxx 1 ชาย ตรวจก่อนคลอด
16/12/2009 นาง วิลาวัลย์ xxx 1 ชาย ตรวจก่อนคลอด
26/1/2010 นาง วิลาวัลย์ xxx 1 ชาย ตรวจก่อนคลอด
9/3/2010 นาง วิลาวัลย์ xxx 1 ชาย ตรวจก่อนคลอด

/*คลอดก่อนฝากครรภ์*/

set @date1 ='2014-10-01',@date2 ='2016-09-30';/*ห่างกันไม่เกิน 2 ปี*/

SELECT

pa.preg_no as'ครรภ์ที่',max(pa.anc_register_date)as register,

max(ps.anc_service_date)as anc_date,

pa.labor_date as 'วันคลอด',

CONCAT(p.fname, SPACE(1), 'xxx') AS 'mother_name'

FROM

person_anc_service AS ps

INNER JOIN

ovst AS o ON o.vn = ps.vn

INNER JOIN

person_anc AS pa ON pa.person_anc_id = ps.person_anc_id

LEFT JOIN

person AS p ON p.patient_hn = o.hn

WHERE pa.labor_date between @date1 and @date2

and pa.labor_date < ps.anc_service_date

group by p.cid,pa.preg_no

order by p.cid

#=================

ตัวอย่าง

ครรภ์ที่ register anc_date วันคลอด mother_name
2 2016-04-19 2016-04-19 2016-04-01 ฝนดาว xxx
1 2015-03-31 2016-08-23 2015-06-19 วิยะดา xxx
1 2015-01-06 2015-01-13 2014-10-28 ส้มโอ xxx
2 2015-09-01 2016-04-12 2016-02-06 จันทร์จิรา xxx
1 2014-08-05 2016-11-15 2015-11-17 THU ZAR(สา) xxx


/*ไม่บันทึกสถานที่คลอด*/

SELECT

p.pname,

CONCAT(p.fname, SPACE(1), p.lname) AS 'child_name',

pl.person_labour_place_name,

l.labour_hospcode

FROM

person_labour AS l

LEFT JOIN

person_labour_place AS pl ON pl.person_labor_place_id = l.person_labour_place_id

INNER JOIN

person AS p ON p.person_id = l.person_id

WHERE

l.labour_hospcode IS NULL

#===============

ตัวอย่าง

pname child_name person_labour_place_name labour_hospcode
ด.ญ. วาสนา xxx โรงพยาบาล
ด.ช. ธนภัทร xxx โรงพยาบาล
ด.ญ. สุชาดา xxx
ด.ช. รณชัย xxx

/*Labour not relate anc ลูกที่มี cid_แม่ ที่แม่ไม่มีในบัญชี 2 */

SELECT

p.pname,

CONCAT(p.fname,space(1),p.lname) as 'child_name',

p.mother_cid,

CONCAT(pm.fname,SPACE(1),pm.lname) AS 'mother_name'

FROM

person_labour AS pl

INNER JOIN person AS p ON p.person_id = pl.person_id

LEFT JOIN person AS pm ON pm.cid = p.mother_cid

WHERE

pm.cid NOT IN (SELECT

p2.cid

FROM

person_anc AS pa

INNER JOIN

person AS p2 ON p2.person_id = pa.person_id)

#=================

ตัวอย่าง

pname child_name mother_cid mother_name
ด.ญ. พัชญ์พิชา ccc 8888888888888 อภิชญาณ์พัส xxx
ด.ญ. ปภัสสร ccc 8888888888888 ชฎาพร xxx
ด.ญ. หนึ่งฤทัย ccc 8888888888888 บานเย็น xxx
ด.ญ. น้ำหวาน ccc 8888888888888 น้ำผึ้ง xxx

/*Chaild ot relate mother ลูกที่ไม่มี cid แม่*/

SELECT

p.pname,

CONCAT(p.fname, SPACE(1), p.lname) AS 'child_name',

p.mother_cid,

CONCAT(pm.fname, SPACE(1), pm.lname) AS 'mother_name'

FROM

person_labour AS pl

INNER JOIN person AS p ON p.person_id = pl.person_id

LEFT JOIN person AS pm ON pm.cid = p.mother_cid

WHERE

pm.cid IS NULL

#==============

ตัวอย่าง

pname child_name mother_cid mother_name
ด.ช. ธัญญ์พัฒน์ xxx
ด.ญ. รุจิรา xxx
ด.ช. ธนกฤต xxx
ด.ญ. สโรชา xxx
ด.ญ. ธัญชนก xxx

anc mcid

/*ผู้ชายฝากครรภ์*/

SELECT

p.pname

,concat(p.fname,space(1),p.lname)as 'mother'

,sex.name

,pa.anc_register_date,pa.pre_labor_service1_date

,pa.pre_labor_service2_date

,pa.pre_labor_service3_date

,pa.pre_labor_service4_date

FROM person_anc AS pa

INNER JOIN person AS p ON p.person_id = pa.person_id

inner join sex on sex.code = p.sex

where p.sex =1

#===========

ตัวอย่าง

pname mother name anc_register_date pre_labor_service1_date pre_labor_service2_date pre_labor_service3_date pre_labor_service4_date
นรต. วิลาวัลย์ xxx ชาย 2009-12-16 2009-11-17 2009-12-16 2010-03-09 2010-04-20