BMS-HOSxP Community
HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: kwh ที่ กรกฎาคม 15, 2009, 18:32:21 PM
-
จากการให้เจ้าหน้าที่ลงข้อมูลการตรวจมะเร็งปากมดลูก แล้วเจอปัญหา ระบบไม่ยอมให้บันทึกข้อมูล เพราะ person มันยังไม่มี hn นั้นเอง (บัญชี 1 ผมยังไม่สมบรูณ์นั้นเอง ;D )
เลยเป็นที่มาของ SQL ตัวที่ผมจะแนะนำครับ (สำหรับ ท่านเทพก็ ถ้าสามารถเขียนได้สั้นกว่านี้ก็ช่วยแนะนำน้องใหม่ด้วยนะครับ)
อธิบาย code ความต้องการคือ ให้นำ HN ของ รพ นำมาเพิ่มให้อัตโนมัติ ใน person โดยมีเหงื่ยนไขว่า CID ต้องเท่ากันเท่านั้น จากการรัน SQL แล้ว ผลปรากฎว่า ได้ HN มา 70% โดยที่ person ผม 28000 กว่าคน นะครับ
อีก 30% ไปไหน ??? เพราะ patient ผมมี CID ไม่ครบครับ
เอา code ด้านล่างไปรันใน สายฟ้านะครับ
UPDATE patient INNER JOIN person ON patient.cid = person.cid SET person.patient_hn = [hn]
WHERE (((person.patient_hn) Is Null));
ผลของการทำงาน
(http://www.upchill.com/direct/9dd833064453313a38a4b01c97fb5c26.JPG)
-
... ขอบคุณครับ ... ;D ...
...ที่ผมนี่ ผมได้ลองสุ่มดูข้อมูล cid ของผู้ป่วยแล้วเจอปัญหา ตอนนี้ก็พยายามแก้อยูู่ก็่คือ cid ในตาราง patient บางราย ไม่ใช่ของผู้ป่วยคนนั้นครับ เกิดการผิดพลาดตอนห้องบัตรบันทึกข้อมูล .. :'( ....
-
เขียนสั้นดีครับ
-
ทำไงอะครับ
กด Run แล้วมันบอกให้ Exce กดแล้ว ok แล้ว
แต่ไม่เห็นลิ้งค์ หรือ patient_hn เพิ่มเลยครับ
เท่าเดิม
-
ถ้าทำถูกต้อง มันจะถามให้ยืนยันการเปลี่ยนครับ ทั้งนี้นั้นก็แล้วแต่ละ รพ. ว่ามีข้อมูล CID สมบูรณ์แค่ไหนด้วยนะครับ
ใช้ได้เฉพาะ PCU รพ. เท่านั้นนะครับ
-
ยืนยันแล้วครับ
มันขึ้น 6 พันกว่า hn
แต่ใช้คำสั่งนับใน person ก็ยังเป็น 3 ร้อยกว่าเหมือนเดิมครับ
-
SELECT Count(person.person_id) AS CountOfperson_id
FROM person
WHERE (((person.patient_hn) Is Not Null));
ลองใช้ code ด้านบน นับดูครับว่ามันปรับให้แล้วกี่ HN
การปรับปรุงอะไรเสร็จแล้ว ก็อย่าลืม กด update ทุกครั้งนะครับไม่อย่างนั้นมันจะ undo กับมาเหมือนเดิมครับ