ผู้เขียน หัวข้อ: ผู้ป่่วยโรคแทรกซ้อน  (อ่าน 14811 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
ผู้ป่่วยโรคแทรกซ้อน
« เมื่อ: มีนาคม 27, 2009, 15:52:56 PM »
0
ช่วยดู mysql หน่อยครับ
ต้องการคัดกรองข้อมูลคนไข้ที่ admit โดยมีวินิจฉัย เป็นเบาหวานมีโรคแทรกซ้อน เช่น เป็นเบาหวานแล้วมีแผลด้วย หรือเป็นเบาหวาน แล้วเป็นโรคตา
และ บางทีมานอนโรงพยาบาลแล้ว diax หลักเป็นแผล diax รองเป็นเบาหวาน(คือมานอนแล้วหมอเพิ่มdiax รองเป็นเบาหวาน)
ต้องเพิ่มหรือลบยังไงบ้างครับ
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110'  or a.dx0 like 'E110' or a.dx1 like 'E110' or a.dx2 like 'E110' or a.dx3 like 'E110' or a.dx4 like 'E110'  )
(a.pdx >= 'L03' and a.pdx <= 'L09')


diax ของแผล L030 ถึง L099
« แก้ไขครั้งสุดท้าย: มีนาคม 27, 2009, 15:59:22 PM โดย komanp »
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ มนตรี บอยรักยุ้ยคนเดียว

  • Hero Member
  • *****
  • กระทู้: 5,369
  • Respect: +12
    • ดูรายละเอียด
    • โรงพยาบาลชุมชน ด่านมะขามเตี้ย
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #1 เมื่อ: มีนาคม 29, 2009, 15:10:09 PM »
0
ลองทดสอบดู

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and ( (a.pdx >= "E100" and a.pdx <= "E149")
or (a.dx0 >= "E100" and a.dx0 <= "E149")
or (a.dx1 >= "E100" and a.dx1 <= "E149")
or (a.dx2 >= "E100" and a.dx2 <= "E149")
or (a.dx3 >= "E100" and a.dx3 <= "E149")
or (a.dx4 >= "E100" and a.dx4 <= "E149")
or (a.dx5 >= "E100" and a.dx5 <= "E149"))
and ((a.dx0 >= "L030" and a.dx0 <= "L099")
or (a.dx1 >= "L030" and a.dx1 <= "L099")
or (a.dx2 >= "L030" and a.dx2 <= "L099")
or (a.dx3 >= "L030" and a.dx3 <= "L099")
or (a.dx4 >= "L030" and a.dx4 <= "L099")
or (a.dx5 >= "L030" and a.dx5 <= "L099"))
เริ่ม11พย.2548OPD-Paperlessพร้อมHOSxPลดโลกร้อน
FF-Paperless(รพ.สค.)เริ่ม1ตค2555=100%
IPD-Lesspaper1ตค2560ระบบDmsByNeoNetwork
IPD-Paperless1พ.ค2562ระบบHOSxPXE4
ServerMTOL8.5+MDB-10.4.20,SlaveOL8.5+MDB-10.7.3
LOG=PostgreSQL11,INV=PostgreSQL11

ออฟไลน์ nahos

  • Hero Member
  • *****
  • กระทู้: 2,216
  • รพ.นาแห้ว
  • Respect: +7
    • ดูรายละเอียด
    • รพ.นาแห้ว
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #2 เมื่อ: มีนาคม 29, 2009, 15:35:30 PM »
0
ทำเสร็จเอามาจแกมั้งเด้อครับ ;D
ถ้าำคำถามท่านได้คำตอบที่ต้องการจากอาจารย์ท่านใด กรุณากด Thank เบา ๆ ^ ถูกใจกด [applaud] ไม่ชอบใจกด[smite]
>> การโพสต์ขอรายงานที่ดี <<
อ่านซักนิด ถามยังไงให้ได้คำตอบ ? :)
วิธีแสดงตัวว่าเป็นใคร โดย อ.อ๊อด (ให้ข้อมูลว่าเป็นใคร ปฏิบัติงานที่ไหน ใช้ server อะไร OS อะไร HOsxp Vไหน)
ก่อนที่จะตั้งกระทู้ถาม ลองค้นจากกระทู้เก่าดูก่อนไหม จะได้คำตอบเร็วกว่าการรอคำตอบนะ
..........................................................................
เจษ จพ.เภสัชกรรมฯ user@ NAHAEO HOSPITAL LOEI. <br>  Supervise by DANSAI HOSPITAL LOEI. <br>
Start 01/03/2550
=> Server IBM X3200 Ram 6 Gb. OS:Cent OS 6.0  
=> Client 20 client  OS: SP2  => HosXP Version <b>3.56.11.19</b>
-----------------------------
น้ำเต็มแก้ว "การเรียนรู้ไม่มีที่สิ้นสุด"

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #3 เมื่อ: มีนาคม 29, 2009, 22:43:48 PM »
0
and ( (a.pdx >= "E100" and a.pdx <= "E149")
or (a.dx0 >= "E100" and a.dx0 <= "E149")
or (a.dx1 >= "E100" and a.dx1 <= "E149")
or (a.dx2 >= "E100" and a.dx2 <= "E149")
or (a.dx3 >= "E100" and a.dx3 <= "E149")
or (a.dx4 >= "E100" and a.dx4 <= "E149")
or (a.dx5 >= "E100" and a.dx5 <= "E149"))

ถ้าจะเอา diax ที่เป็นเบาหวานรหัส E100,E110,E119,E149 ต้องทำไงครับ
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #4 เมื่อ: มีนาคม 30, 2009, 08:31:12 AM »
0
and ( (a.pdx >= "E100" and a.pdx <= "E149")
or (a.dx0 >= "E100" and a.dx0 <= "E149")
or (a.dx1 >= "E100" and a.dx1 <= "E149")
or (a.dx2 >= "E100" and a.dx2 <= "E149")
or (a.dx3 >= "E100" and a.dx3 <= "E149")
or (a.dx4 >= "E100" and a.dx4 <= "E149")
or (a.dx5 >= "E100" and a.dx5 <= "E149"))

ถ้าจะเอา diax ที่เป็นเบาหวานรหัส E100,E110,E119,E149 ต้องทำไงครับ


and a.pdx in ("E100","E110","E119","E149") or
a.dx0 in ("E100","E110","E119","E149") or
a.dx1 in ("E100","E110","E119","E149") or
a.dx2 in ("E100","E110","E119","E149") or
a.dx3 in ("E100","E110","E119","E149") or
a.dx4 in ("E100","E110","E119","E149") or
a.dx5 in ("E100","E110","E119","E149")

pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 409
  • Respect: +12
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #5 เมื่อ: มีนาคม 30, 2009, 10:45:14 AM »
0
select a.hn,a.an,concat(p.pname,p.fname,'  ',p.lname) as ptname
,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5
from an_stat a
left join iptdiag i on i.an=a.an
left join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and i.icd10 between 'E10' and 'E1499'
and (i.icd10 between 'L01' and 'L099' or i.icd10='T793' or i.icd10='L89'
or i.icd10 in ('E105','E115','E145','E100','E110','E119','E149'))
group by a.an
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #6 เมื่อ: มีนาคม 30, 2009, 11:03:11 AM »
0
select a.hn,a.an,concat(p.pname,p.fname,'  ',p.lname) as ptname
,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5
from an_stat a
left join iptdiag i on i.an=a.an
left join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and i.icd10 between 'E10' and 'E1499'
and (i.icd10 between 'L01' and 'L099' or i.icd10='T793' or i.icd10='L89'
or i.icd10 in ('E105','E115','E145','E100','E110','E119','E149'))
group by a.an

น่าจะเอาบรรทัดสีแดงออกด้วยครับ
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #7 เมื่อ: มีนาคม 30, 2009, 12:34:22 PM »
0
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and ((a.pdx >= 'L03' and a.pdx <= 'L09') and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100'))
order by an
ถ้าใช้ code ตัวนี้จะได้ผลตามรูปข้างล่างครับ

แต่จะได้โรคหลักเป็นล้างแผล โรครองเป็นจะเป็นเบาหวาน
แต่ผมอยากให้ตรงdiaxหลักหรือรองเป็นอะไรก็ได้ แต่ต้องไขว้กันอย่างไดอย่างหนึ่ง
เช่น diax L03 ถึง L09 จับคู่กับ E110 หรือ E119 หรือE149
หรือ E110 หรือ E119 หรือE149 อย่างใดอย่างหนึ่งจับคู่กับ L03 ถึง l09
ซึ่งผมลองเปลี่ยนให้เป็น

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
left join iptdiag i on i.an=a.an
where a.dchdate between '2007-12-01' and '2008-09-30'
and ((i.icd10  >= 'L03' and i.icd10  <= 'L09') or i.icd10 in ('E119','E110','E149','E100')  )
order by an
ข้อมูลที่ได้จะออกมาเยอะเลยครับ
ซึ่งจะมันจะเอาอย่างใดอย่างหนึ่งขึ้นมา
เช่น เอา diax หลักหรือรองอย่างใดอย่างหนึ่งขึ้นมา
ดังรูปที่สอง
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #8 เมื่อ: มีนาคม 30, 2009, 13:10:03 PM »
0
ลองดูอันนี้ครับ

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')
union
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )
order by an
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 409
  • Respect: +12
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #9 เมื่อ: มีนาคม 30, 2009, 13:53:13 PM »
0
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
left join iptdiag i on i.an=a.an
where a.dchdate between '2007-12-01' and '2008-09-30'
and ((i.icd10  >= 'L03' and i.icd10  <= 'L09') and i.icd10 in ('E119','E110','E149','E100')  )
group by a.an
order by a.an
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #10 เมื่อ: มีนาคม 30, 2009, 14:29:10 PM »
0
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
left join iptdiag i on i.an=a.an
where a.dchdate between '2007-12-01' and '2008-09-30'
and ((i.icd10  >= 'L03' and i.icd10  <= 'L09') and i.icd10 in ('E119','E110','E149','E100')  )
group by a.an
order by a.an


ผมคิดว่าโค้ดนี้น่าจะได้ 'L09') and i.icd10 in  ตรงนี้น่าจะได้
แต่พอลองรันดูมันไม่มีข้อมูล ทั้ง ๆ ที่ข้อมูลก็มีอยู่
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #11 เมื่อ: มีนาคม 30, 2009, 14:32:02 PM »
0
ลองดูอันนี้ครับ

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')
union
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )
order by an


โค้ดนี้ก็ได้เหมือนโค้ดดังรูปที่ 1 ไม่ต่างกันเลย
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #12 เมื่อ: มีนาคม 30, 2009, 14:49:06 PM »
0
ลองดูอันนี้ครับ

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')
union
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )
order by an


โค้ดนี้ก็ได้เหมือนโค้ดดังรูปที่ 1 ไม่ต่างกันเลย


ลอง run ทีละคำสั่ง

1. คือ select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')

และ 2. คือ select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )

ว่ามีข้อมูลแต่ละอันกี่ record ถ้าอันที่ 1 มีข้อมูล ส่วนอันที่ 2 ไม่มีข้อมูล ผลที่ได้ก็จะไม่ต่างกัน
จริง ๆ แล้ว pdx ที่เป็น L03 ถึง L09 แล้ว dx0 เป็น E1% น่าจะมีข้อมูล แต่ pdx ที่เป็น E1% แล้ว dx0 เป็น L03 ถึง L09 ไม่น่าจะมีครับ
« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2009, 15:03:18 PM โดย pop_hosxp »
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 409
  • Respect: +12
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #13 เมื่อ: มีนาคม 30, 2009, 14:56:36 PM »
0
ลองตรวจสอบข้อมูลของ IPTDIAG ดู เช่น
select a.hn,a.an,a.dchdate,i.icd10
from an_stat a
left join iptdiag i on i.an=a.an
where a.an=510001325
ว่ามีข้อมูลมั๊ย?
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #14 เมื่อ: มีนาคม 30, 2009, 15:04:26 PM »
0
ลองตรวจสอบข้อมูลของ IPTDIAG ดู เช่น
select a.hn,a.an,a.dchdate,i.icd10
from an_stat a
left join iptdiag i on i.an=a.an
where a.an=510001325
ว่ามีข้อมูลมั๊ย?

มีข้อมูลนะครับ
ลองดูแล้ว
« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2009, 15:06:55 PM โดย komanp »
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #15 เมื่อ: มีนาคม 30, 2009, 15:07:53 PM »
0
ลอง run ทีละคำสั่งตามที่ผม post ไว้ แล้ว capture หน้าจอให้ดูด้วยครับ
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #16 เมื่อ: มีนาคม 30, 2009, 15:18:38 PM »
0
ลองดูอันนี้ครับ

select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')
union
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )
order by an


โค้ดนี้ก็ได้เหมือนโค้ดดังรูปที่ 1 ไม่ต่างกันเลย


ลอง run ทีละคำสั่ง

1. คือ select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L03' and a.pdx <= 'L09' )
and (dx0 like 'E110' or dx0 like 'E119' or dx0 like 'E149' or dx0 like 'E149' or dx0 like 'E100')

และ 2. คือ select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100')
and (dx0 >= 'L03' and dx0 <= 'L09' )

ว่ามีข้อมูลแต่ละอันกี่ record ถ้าอันที่ 1 มีข้อมูล ส่วนอันที่ 2 ไม่มีข้อมูล ผลที่ได้ก็จะไม่ต่างกัน
จริง ๆ แล้ว pdx ที่เป็น L03 ถึง L09 แล้ว dx0 เป็น E1% น่าจะมีข้อมูล แต่ pdx ที่เป็น E1% แล้ว dx0 เป็น L03 ถึง L09 ไม่น่าจะมีครับ
โค้ดพวกนี้จะได้ผลไม่ต่างกัน
ที่ต้องการให้ต่างน่าจะเป็นโค้ดตัวนี้
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
left join iptdiag i on i.an=a.an
where a.dchdate between '2007-12-01' and '2008-09-30'
and ((i.icd10  >= 'L03' and i.icd10  <= 'L09') and i.icd10 in ('E119','E110','E149','E100')  )
group by a.an
order by a.an
แต่ติดตรง เปลี่ยน or ให้เป็น and แล้วมันไม่แสดงผลลัพธ์ and ((i.icd10  >= 'L03' and i.icd10  <= 'L09') and i.icd10 in ('E119','E110','E149','E100')  )
ทั้งที่จริง ๆ แล้วข้อมูลมันมีอยู่
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #17 เมื่อ: มีนาคม 30, 2009, 15:25:14 PM »
0
ลอง run ทีละคำสั่งตามที่ผม post ไว้ แล้ว capture หน้าจอให้ดูด้วยครับ
คำสั่งที่1 ได้ดังรูปที่ 4
คำสั่งที่2 ได้ดังรูปที่ 5
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,128
  • Respect: +38
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #18 เมื่อ: มีนาคม 30, 2009, 15:29:43 PM »
0
ลอง run ทีละคำสั่งตามที่ผม post ไว้ แล้ว capture หน้าจอให้ดูด้วยครับ
คำสั่งที่1 ได้ดังรูปที่ 4
คำสั่งที่2 ได้ดังรูปที่ 5

คำสั่งที่ให้ไปน่าจะถูกแล้ว
คือ คำสั่งที่ 1 ต้องการดูข้อมูลคนที่มี pdx เป็น L0% และเป็น E1%
ส่วนคำสั่งที่ 2 ต้องการดูข้อมูลคนที่มี pdx เป็น E1% และเป็น L0%

แต่ที่ว่ามีข้อมูลอยู่คือมีอยู่ที่ dx อื่น ที่ไม่ใช่ dx0 หรือเปล่า ถ้าใช่ต้องเพิ่ม dx1 dx2 dx3 dx4 และ dx5 เข้าไปด้วย
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด www.phanomphrai.net

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #19 เมื่อ: มีนาคม 30, 2009, 16:19:15 PM »
0
ลอง run ทีละคำสั่งตามที่ผม post ไว้ แล้ว capture หน้าจอให้ดูด้วยครับ
คำสั่งที่1 ได้ดังรูปที่ 4
คำสั่งที่2 ได้ดังรูปที่ 5

คำสั่งที่ให้ไปน่าจะถูกแล้ว
คือ คำสั่งที่ 1 ต้องการดูข้อมูลคนที่มี pdx เป็น L0% และเป็น E1%
ส่วนคำสั่งที่ 2 ต้องการดูข้อมูลคนที่มี pdx เป็น E1% และเป็น L0%

แต่ที่ว่ามีข้อมูลอยู่คือมีอยู่ที่ dx อื่น ที่ไม่ใช่ dx0 หรือเปล่า ถ้าใช่ต้องเพิ่ม dx1 dx2 dx3 dx4 และ dx5 เข้าไปด้วย

ใช่เลยครับ
นี่แหละที่เป็นปัญหา
เคยเพิ่มแล้วมันไม่ได้
ถ้าเป็นคนไข้นอกต้องไปหาตารางไหนครับ
ใช่ vn_stat ไหม
« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2009, 20:22:07 PM โดย komanp »
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #20 เมื่อ: มีนาคม 30, 2009, 23:08:36 PM »
0
ได้คำตอบแล้วครับ
ขอบคุณคุณ pop_hosxp และคุณ woravet มากเลยครับ
ทำให้ได้ไอเดียทำโค้ดขึ้นมา
โค้ดที่ใกล้เคียงมากที่สุด ผมลองประยุกต์จากที่โพสให้ได้ดังนี้ครับ
select a.hn,a.an,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from an_stat a
left outer join patient p on p.hn=a.hn
where a.dchdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L030' and a.pdx <= 'L099')
or (a.dx0 >= 'L030' and a.dx0 <= 'L099'  )
or  (a.dx1 >= 'L030' and a.dx1 <= 'L099'  )
or  (a.dx2 >= 'L030' and a.dx2 <= 'L099'  )
or  (a.dx3 >= 'L030' and a.dx3 <= 'L099'  )
or  (a.dx4 >= 'L030' and a.dx4 <= 'L099'  )
or  (a.dx5 >= 'L030' and a.dx5 <= 'L099'  )
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E100'
or dx1 like 'E110' or dx1 like 'E119' or dx1 like 'E149' or dx1 like 'E100'
or dx2 like 'E110' or dx2 like 'E119' or dx2 like 'E149' or dx2 like 'E100'
or dx3 like 'E110' or dx3 like 'E119' or dx3 like 'E149' or dx3 like 'E100'
or dx4 like 'E110' or dx4 like 'E119' or dx4 like 'E149' or dx4 like 'E100'
or dx5 like 'E110' or dx5 like 'E119' or dx5 like 'E149' or dx5 like 'E100')
order by an
ได้ผลรายงานที่น่าพอใจ
แต่ต้องไปไล่คัดเอาอีก
แต่ข้อมูลก็น้อยลงมาก ๆ นับได้ไม่ยากครับ
นับได้แล้วเพิ่มจาก 4 ราย เป็น 6 รายครับ
ข้อมูลไม่ตกหล่นแล้ว
« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2009, 23:36:48 PM โดย komanp »
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30

ออฟไลน์ komanp

  • Sr. Member
  • ****
  • กระทู้: 375
  • Respect: 0
    • ดูรายละเอียด
Re: ผู้ป่่วยโรคแทรกซ้อน
« ตอบกลับ #21 เมื่อ: มีนาคม 30, 2009, 23:26:09 PM »
0
โค้ดนี้เป็นผู้ป่วยนอกครับ
ไม่แน่ใจว่าผู้ป่วยนอกต้องเป็นตารางนี้ไหม
select a.hn,a.vn,a.pdx,a.dx0,a.dx1,a.dx2,a.dx3,a.dx4,a.dx5,concat(p.pname,p.fname,'  ',p.lname) as ptname from vn_stat a
left outer join patient p on p.hn=a.hn
where a.vstdate between '2007-12-01' and '2008-09-30'
and (a.pdx >= 'L030' and a.pdx <= 'L099')
or (a.dx0 >= 'L030' and a.dx0 <= 'L099'  )
or  (a.dx1 >= 'L030' and a.dx1 <= 'L099'  )
or  (a.dx2 >= 'L030' and a.dx2 <= 'L099'  )
or  (a.dx3 >= 'L030' and a.dx3 <= 'L099'  )
or  (a.dx4 >= 'L030' and a.dx4 <= 'L099'  )
or  (a.dx5 >= 'L030' and a.dx5 <= 'L099'  )
and (a.pdx like 'E110' or a.pdx like 'E119' or a.pdx like 'E149' or a.pdx like 'E149' or a.pdx like 'E100'
or dx1 like 'E110' or dx1 like 'E119' or dx1 like 'E149' or dx1 like 'E100'
or dx2 like 'E110' or dx2 like 'E119' or dx2 like 'E149' or dx2 like 'E100'
or dx3 like 'E110' or dx3 like 'E119' or dx3 like 'E149' or dx3 like 'E100'
or dx4 like 'E110' or dx4 like 'E119' or dx4 like 'E149' or dx4 like 'E100'
or dx5 like 'E110' or dx5 like 'E119' or dx5 like 'E149' or dx5 like 'E100')
order by vn
« แก้ไขครั้งสุดท้าย: มีนาคม 30, 2009, 23:38:05 PM โดย komanp »
komanp_msu2004@hotmail.com
Server ubuntu 8.10 64 Bit Mysql 5.0.67    ram 2 GB  raid 5
3.52.8.30