BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: udomchok ที่ มกราคม 26, 2010, 15:02:39 PM
-
เคยเห็นของคนอื่นทำไว้แล้ว แต่ท่าน atit ถามมาให้ลองทำให้หน่อย พยายามอยู่หลายวัน กับวิธีการแบบเดิม ๆ (SQL แบบที่ใช้ใน MS Access) แต่ไม่ work ซะที
เมื่อคืนลองทำรายงานผู้ป่วย HIV ที่มา ร.พ. ตั้งแต่ 2 ครั้งขึ้นไป และอายุมากกว่า 15 ปี เสร็จ ก็เลยใช้ idea เดียวกันในการทำรายงานตัวนี้ (เดี๋ยวจะบอกขั้นตอนว่าคิดมาอย่้างไรบ้าง) แต่กลับพบปัญหาที่ไม่สามารถแก้ไขได้ด้วยวิธีการเดียวกับ report HIV ที่ visit มากกว่า 1 ครั้ง และอายุมากกว่า 15 ปี
เช้านี้มาหาวิธีการต่อว่าจะทำอย่างไรดี เล่นซะครึ่งวันกว่าจะได้ออกมาอย่างที่ต้องการ
ใครเอาไปแล้วอย่ามึนนะครับ select ซ้อน select ซ้อน select อีกที
;D ;D ;D ;D
-
มาเล่าให้ฟังต่อครับ
แนวคิดในการเขียน sql ของผมก็คือ
(เอาเรื่องผู้ป่วย HIV มา ร.พ.มากกว่า 1 ครั้ง และอายุมากกว่า 15 ปีก่อนนะครับ)
อันดับแรกก็คือดึงรายการผู้ป่วยที่มี diag ตามที่ต้องการก่อน โดยใช้ ovstdiag ตามช่วงเวลาที่กำหนด
ก็จะได้ sql ประมาณนี้
select p.hn,concat(p.pname,p.fname," ",p.lname) as ptname,p.sex,v.age_y,p.birthday,count(v.vn) as times
from vn_stat v
join ovstdiag od on od.vn=v.vn
join patient p on p.hn=v.hn
where ((od.icd10 between "B20" and "B24") or od.icd10 like "Z21" or od.icd10 like "R75") and (v.vstdate between "'+ds1+'" and "'+ds2+'") and v.age_y > 15
group by hn
order by p.hn,v.vn
ก็จะได้ว่าผู้ป่วยที่ต้องกามา ร.พ.กี่ครั้งในช่วงเวลาที่กำหนด
ต่อมาเราก็มาเลือกเอาเฉพาะรายที่มีจำนวนครั้งของการมา (times) มากกว่า 1 ก็ต้องเป็นอีก sql หนึ่งซ้อนอยู่ข้างนอกพร้อมเงื่อนไข
select hn,ptname,sex,age_y,birthday,times from [sqlเดิม] where times > 1
โดยที่ [sqlเดิม] คือ sql จากข้างบนใช่ไหมครับ
ดังนั้น sql ที่สมบูรณ์ของผมก็จะเป็นแบบนี้ครับ
select hn,ptname,sex,age_y,birthday,times from (select p.hn,concat(p.pname,p.fname," ",p.lname) as ptname,p.sex,v.age_y,p.birthday,count(v.vn) as times
from vn_stat v
join ovstdiag od on od.vn=v.vn
join patient p on p.hn=v.hn
where ((od.icd10 between "B20" and "B24") or od.icd10 like "Z21" or od.icd10 like "R75") and (v.vstdate between "'+ds1+'" and "'+ds2+'") and v.age_y > 15
group by hn
order by p.hn,v.vn) as temp
where times > 1');
คราวนี้คงงงว่า as temp มาจากไหน ก็เพือให้ sql ในส่วนสีแดงมีที่อยู่ก็เลยต้องอ่านขอ้มูลไปเก็บใน temp ก่อนไงครับ
;D ;D ;D ;D
อันนี้แบบเบาะ ๆ DuplicateCID_Patient ยากกว่านี้อีกหน่อยหนึ่ง
ใครเขียนสั้น ๆ อย่าว่ากันนะครับ
ผมไล่ทีละ step ว่าจะได้อะไรออกมาบ้าง แล้วจึงนำมารวมกัน
ลองไปแกะ sql ของ DuplicateCID_Patient นะครับ
ปล.ไม่ใช่เทพ ;D ;D ;D ;D ;D
-
ขอบคุณมากครับ ขอเอาไปใช้ด้วยคนครับ
-
เดี๋ยวจะตามมาด้วยบ้านและคนที่ซ้ำกัน ในฝั่งเชิงรุก
-
เดี๋ยวจะตามมาด้วยบ้านและคนที่ซ้ำกัน ในฝั่งเชิงรุก
รูปแบบ SQL ที่พี่โก้เขียน ผมยังไม่เคยลอง ความรู้ใหม่ ว่า MySQL สามารถเขียนแบบนี้ได้ด้วยครับ
พีโก้ จัดแจ่ม จริงๆๆ ยิงมาเป็นชุด
ขอบคุณครับ
-
โอ้ว เทพ. :)
-
โอ้ว เทพ. :)
เทพ 'ไรครับจารย์
เทพ เทียนชัย (ตายไปแล้ว)
เพท โพธิ์งาม (อันนี้ยังอยู่)
เทพ เ..ือก ;D ;D ;D ;D ;D
แหม...บอกแล้วว่าไม่เทพครับ
รูปแบบ SQL ที่พี่โก้เขียน ผมยังไม่เคยลอง ความรู้ใหม่ ว่า MySQL สามารถเขียนแบบนี้ได้ด้วยครับ
พี่โก้ จัดแจ่ม จริงๆๆ ยิงมาเป็นชุด
ขอบคุณครับ
ก็เขียนตามความรู้สึก ว่าอยากได้อะไร แต่ละขั้นต้องได้อะไรออกมา
แต่ไม่รู้ว่าที่ถูกต้องควรจะเป็นอย่างไร ว่า อ.mn ชี้แนะด้วยครับ
-
ไม่รู้ว่าจะชี้แน่ะอย่างไร เพราะผมยังเขียนได้ไม่เท่าพี่โก้เลยครับ :D
-
;D ขอบคุณพี่โก้มากครับ
- ขอเพิ่มเติมนิดหน่อยครับ ถ้าไม่ยากเกินไป แฮะๆ
เพิ่มเงื่อนไข ไม่เอา cid ว่าง และ ไม่เอาที่มี 0 นำหน้า และ cid ที่ไม่เท่ากับ 1111111111111
จะสุดยอดๆๆๆๆมากๆๆๆ เลยครับ
-
;D ขอบคุณพี่โก้มากครับ
- ขอเพิ่มเติมนิดหน่อยครับ ถ้าไม่ยากเกินไป แฮะๆ
เพิ่มเงื่อนไข ไม่เอา cid ว่าง และ ไม่เอาที่มี 0 นำหน้า และ cid ที่ไม่เท่ากับ 1111111111111
จะสุดยอดๆๆๆๆมากๆๆๆ เลยครับ
cid ว่าง ไม่เอา อันนี้อยู่ในตัวนี้แล้วครับ
0 นำหน้า ไม่เอา ไม่ได้ครับ ของผมพบว่ามีต่างด้าวเลขซ้ำซ้อน (ไม่รู้ห้องบัตรทำอย่างไร ซ้ำเต็มไปหมด)
1111111111111 ไม่เอา ได้ครับ เดี๋ยวกรองออกให้
-
cid ว่าง ไม่เอา อันนี้อยู่ในตัวนี้แล้วครับ
0 นำหน้า ไม่เอา ไม่ได้ครับ ของผมพบว่ามีต่างด้าวเลขซ้ำซ้อน (ไม่รู้ห้องบัตรทำอย่างไร ซ้ำเต็มไปหมด)
1111111111111 ไม่เอา ได้ครับ เดี๋ยวกรองออกให้
;D ;D ;D หัวอกเดียวกันครับป๋าโก้ ต่างด้าวนี่ไม่รู้จะจัดระบบอย่างไร สงสัยต้องปรึกษาอ.อ๊อด(เทพพม่า) กำลังหาทางออกเรื่องนี้อยู่เหมือนกันครับ พี่ terminator ไม่อยากได้เคสต่างด้าวเยอะ ๆ เอาไว้ปวดหัวบ้างหรือครับ ;D ;D ;D
-
เผอิญ จังหวัด พี่ terminator เขาไม่ได้ติดแนวชายแดน คงไม่ค่อยมี พม่า สงสัย รอปรึกษาอ.อ๊อด(เทพพม่า) ช่วยให้คำแนะนำ
-
??? ทำไมของผมมี cid ว่าง ออกมาด้วยครับ หน้าแรกเลย เยอะด้วย แฮะๆ
-
??? ทำไมของผมมี cid ว่าง ออกมาด้วยครับ หน้าแรกเลย เยอะด้วย แฮะๆ
ผมใช้ cid is not null แสดงว่าของท่าน terminator ไม่เป็น null หรือเปล่าครับ
เดี๋ยวจะลองเปลี่ยนเป็น length(trim(cid))>0 ให้ทดสอบนะครับ
-
สำหรับท่าน Terminator นะครับ ผมยังไม่ได้ทดสอบกับข้อมูลจริง เพราะใช้เครื่องที่บ้าน (ไม่มีข้อมูล)
ลองดูว่า cid ว่าง ๆ ยังออกมาอีกไหม
แต่ 0 นำผมยังไม่ได้เอาออกให้นะครับ
-
อันนี้แบบมี drop down ให้เลือกว่าจะเอา 1111111111111 มาแสดงหรือไม่
ถ้าไม่เลือกจะแสดง 11111111111 ด้วย
-
สำหรับท่าน Terminator นะครับ ผมยังไม่ได้ทดสอบกับข้อมูลจริง เพราะใช้เครื่องที่บ้าน (ไม่มีข้อมูล)
ลองดูว่า cid ว่าง ๆ ยังออกมาอีกไหม
แต่ 0 นำผมยังไม่ได้เอาออกให้นะครับ
;Dขอบคุณพี่โก้มากครับ ไม่มี cid ว่างออกมาแล้วครับ
-
สุดยอด อ.โก้ ;D ;D
-
ขอบคุณครับ
-
สุดยอดครับ ท่าน อ.เทพโก้
ของผมแบบง่ายๆครับ ขอเอาของเทพ อ.โก้ไปทดสอบด้วยนะครับ
ผมตรวจสอบกับ NHSO UCSearch Client ใน HOSxP
-
สุดยอดครับ ท่าน อ.เทพโก้
ของผมแบบง่ายๆครับ ขอเอาของเทพ อ.โก้ไปทดสอบด้วยนะครับ
ผมตรวจสอบกับ NHSO UCSearch Client ใน HOSxP
ทดสอบแล้ว ผลออกมาเป็นอย่างไรบ้าง บอกด้วยนะครับ ;D ;D
-
ผมเอาของท่านปอมาทดสอบแล้วครับ เห็นความแตกต่างกับของผมแล้วครับ ;D ;D ;D ;D
ใครว่าง ๆ ลองเอาไปทดสอบ แล้วมาเฉลยกันหน่อยครับ
-
ขอบคุณมั่กๆครับ ...
-
ผมเอาของท่านปอมาทดสอบแล้วครับ เห็นความแตกต่างกับของผมแล้วครับ ;D ;D ;D ;D
ใครว่าง ๆ ลองเอาไปทดสอบ แล้วมาเฉลยกันหน่อยครับ
มีความแตกต่างอย่างไรบ้างครับ ท่านเทพ อ.ภก. อุดมโชค ครับ
-
โอ้ว เทพ. :)
... โอ้ว เทพ .. โอ้ว เทพ .. โอ้ว เทพ ... ;D ;D ;D ...
... สุดยอดครับพี่โก้ ... :D ...
-
ผมเอาของท่านปอมาทดสอบแล้วครับ เห็นความแตกต่างกับของผมแล้วครับ ;D ;D ;D ;D
ใครว่าง ๆ ลองเอาไปทดสอบ แล้วมาเฉลยกันหน่อยครับ
มีความแตกต่างอย่างไรบ้างครับ ท่านเทพ อ.ภก. อุดมโชค ครับ
ท่านปอเทพกว่าเห็น ๆ มี สปสช. มาด้วย ;) ;) ;) ;)
-
สุดยอดครับ ท่าน อ.เทพโก้
ของผมแบบง่ายๆครับ ขอเอาของเทพ อ.โก้ไปทดสอบด้วยนะครับ
ผมตรวจสอบกับ NHSO UCSearch Client ใน HOSxP
person CID ซ้ำ อ.por ช่วยเพิ่มที่อยู่ของทั้งสอง HN ให้ด้วยครับ
จะนำข้อมูลไปแก้ไขได้เร็วขึ้น ไม่ต้องเข้าไปดูที่อยู่อีกรอบครับ
ขอบคุณครับ
-
ครับ เดี่ยวจัดให้ครับ
-
ขอบคุณครับ...รอครับ ;D ;D
-
สุดยอดคับ ! + ต้องเอามาใช้ซะแล้ว คับ
-
ขอบคุณครับ...รอครับ ;D ;D
รอด้วยความหวังครับ เพราะตอนนี้ HN ปาเข้าไป ครึ่งแสนแล้วครับ :'( :'( :'(
ทั้งที่ มีแค่ 30000 กว่าคนเองครับ โดนPatient link เล่นงาน :-[ :-[ :-[ :-[
-
ขอบคุณครับ...
-
??? ??? ???
เห็นแล้วเป็นอัน...งง....อึ่ง....มึน
:D