ต้องการหาช่วงเวลาที่ union กัน
กระทู้เก่าบอร์ด อ.Yeadram

 1,277   7
URL.หัวข้อ / URL
ต้องการหาช่วงเวลาที่ union กัน

ขอความช่วยเหลือด้วยนะคะ

     ดิฉันมีฐานข้อมูลการใช้ยาของผป ใน รพ. เช่น ผป.คนหนึ่ง “154” ตามตาราง

ข้างล่าง ซึ่งในแต่ละปี ผป คนนี้จะมาหาหลาย clinic บางครั้งก็วันเดียวกัน บาง

ครั้งก็ต่างวันกัน เมื่อรวมกับผป.คนอื่นๆ จะมี rec ประมาณ 700,000 rec/ปี
     
B_Date      PT_NO     Drug      Amt        Use                Day         E_date
1/1/2554    154          A            180        1x3                60                1/3/2554
1/1/2554        154                 B             30           กินเวลาปวด          X             X
1/1/2554    154          C             90        1X2                60               1/3/2554
2/2/2554    154          Z             20        1x1                20             22/2/2554

    ปัญหาของดิฉันคือ หากมีการสั่งยา Z ให้ผป 154   ยา Z จะตีกันกับยา A และ

B จนทำให้ผป.เสียชีวิตได้

ดิฉันต้องการหาข้อมูล การสั่งยาที่ตี เช่น ใส่ criteria ที่ Drug = Z or A or B

อยากได้รายงานว่า
       
           Drug E กับ A ใช้ร่วมกัน ตั้งแต่ 2/2/2554 – 22/2/2554       20 วัน

          Drug E กับ B ใช้ร่วมกัน XXXXX   เนื่องจากไม่สามารถหา E_date ได้

    ซึ่งต้องไปดูรายละเอียดเอง
B_Date      PT_NO     Drug      Amt           Use         Day            E_date
วันเริ่มยา      ผป            ยา        จน.ยา    วิธีใช้      จน.วันที่ใช้     วันที่ยาหมด

ขอบพระคุณคะ

7 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R12843
ขอโทษนะคะ

เป็น   Drug Z กับ A ใช้ร่วมกัน ตั้งแต่ 2/2/2554 – 22/2/2554       20 วัน

          Drug Z กับ B ใช้ร่วมกัน XXXXX   เนื่องจากไม่สามารถหา E_date ได้

อีกสัก 1 คำถามคะ ตรง field Drug หากดิฉันใส่ parameter [ใส่ชื่อยา] เวลา

run   Query มีวิธีไดที่จะทำให้เป็น drop down list ได้บ้างคะ เพราะว่า คู๋ยาที่ตี

กันมีหลายคู่คะ

      ดิฉันเคยถามผู้รู้มาแล้วว่าไม่มีทางทำได้ หากไม่ต้อง run ตรง Query นี้

โดยตรงพอมีทางอื่นอีกไหมคะ

                      ขอบคุณคะ
2 @R12852
ที่พอจะคิดคำสั่ง SQL ออก ต้องมีการปรับปรุงต่อไปนี้เพื่อให้สะดวก

1. ฟิลด์ B_Date และ E_Date ต้องมี data type เป็น Date/Time (ผมไม่แน่ใจว่าคุณเก็บเป็น Text หรือเปล่า แต่ถ้าใช่ มันจะยิ่งยุ่งยาก คุณต้องไปปรับปรุงเงื่อนไขใน SQL เอาเอง)

2. E_Date ที่ไม่รู้วันสิ้นสุด ต้องเก็บเป็นวันที่ที่มากๆไปเลย เช่น 31/12/2600

3. ต้องมีเทเบิล DX เพื่อเก็บว่า ยาไหนตีกับยาไหน โดยมี 2 ฟิลด์คือ X1 และ X2 ดังนั้นจึงไม่รองรับการกินยาที่จะเกิดพิษเมื่อกินตั้งแต่ 3 ตัวหรือมากกว่า และป้อนเฉพาะ A กับ Z ก็พอ ไม่ต้องป้อน Z กับ A อีกด้วย

4. สมมุติว่าเทเบิลการให้ยาที่บอกมา มีชื่อว่า DP มีฟิลด์ D=ยา, B=B_Date, E=E_Date

SQL ก็จะเป็นลักษณะนี้
SELECT DP1.*, DP2.*
FROM (DP AS DP1 INNER JOIN DX ON DP1.D = DX.X1) INNER JOIN DP AS DP2 ON DX.X2 = DP2.D
WHERE (DP1.B BETWEEN DP2.B AND DP2.E)
OR (DP1.E BETWEEN DP2.B AND DP2.E)
OR (DP2.B BETWEEN DP1.B AND DP1.E)
OR (DP2.E BETWEEN DP1.B AND DP1.E)

คุณก็เอา SQL นี้ไปต่อยอดอีกทีแล้วกันครับ

หมายเหตุ : เนื่องจากเป็นงานที่เกี่ยวข้องกับชีวิตผู้ป่วย ผมไม่ขอรับผิดชอบใดๆต่อความผิดพลาดที่อาจเกิดขึ้นได้จากคำตอบของผม คุณต้องไปทดสอบและตรวจสอบว่าข้อมูลนั้นแสดงออกมาได้ถูกต้องหรือไม่เอาเองนะครับ
3 @R12854
ขอบพระคุณคะ     ไม่ต้องกังวลใจเรื่องที่จะต้องรับผิดชอบหรอกคะ

เป็นการช่วยเหลือผู้ป่วยเสียอีก จะไปทดลองทำดูนะคะ
4 @R12860
    SQL พอ run แล้ว

1 ดูค่อนข้างยากคะ ต้องมาดูด้วยสายตาอีกที

2 ต้องเป็น PT_NO คนเดียวกัน ดิฉันจึงใส่ criteria เพิ่ม (DP1. PT_NO = DP2

.PT_NO)

3 ไม่ได้ตอบโจทย์ว่า ซ้ำกัน กี่วัน ตั้งแต่วันไหน ถึงวันไหน คะ

     พยายามหาคำตอบต่อคะ


5 @R12861
เห็นไหมๆ ผมหลุดจนได้ นี่แหล่ะครับที่ต้องทำหมายเหตุเอาไว้

เรื่องวันที่คาบเกี่ยวตั้งแต่วันไหนถึงวันไหนบ้าง ถ้าเป็นวันเริ่มต้นของการคาบเกี่ยว วันที่นั้นก็คือวันที่ที่มากกว่าระหว่าง DP1.B กับ DP2.B และวันที่สุดท้ายของการคาบเกี่ยวก็คือวันที่ที่น้อยกว่าระหว่าง DP1.E และ DP2.E ครับ ส่วนคาบเกี่ยวกันกี่วัน ก็แค่เอาวันสุดท้ายลบด้วยวันเริ่มต้นแล้วบวกด้วย 1 เท่านั้นเองครับ

SELECT .... , IIF(DP1.B > DP2.B, DP1.B, DP2.B) AS BLAP, IIF(DP1.E < DP2.E, DP1.E, DP2.E) AS ELAP, (DATEDIFF("D", BLAP, ELAP) +1) AS DLAP AS ELAP
FROM ...
WHERE ...
6 @R12862
แก้ไขที่ผิด

AS DLAP AS ELAP

เป็น

AS DLAP
7 @R12866
ขอบคุณคะ

     อจ.ช่วยเหลือคนไข้ และทำความดีนะคะ อย่าเข้าใจผิดหรือกังวล

คะ     ขอบคุณอีกครั้งนะคะ






















@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3311s