BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: udomchok ที่ ธันวาคม 02, 2009, 23:36:31 PM

หัวข้อ: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 02, 2009, 23:36:31 PM
เพิ่งทำเสร็จเมื่อปลายเดือน พ.ย. 52 แต่พอนำไปใช้งานจริงแล้วมีปัญหาเรื่องการเรียงลำดับ
เมื่อคืนเอามาแก้ไขใหม่ น่าจะเรียบร้อย เรียงลำดับตามกลุ่ม LAB (CBC, Electrolyte, etc.)
เพิ่มการตรวจสอบผล LAB ที่ได้ว่ามากกว่าหรือน้อยกว่าค่าปกติ หากมากกว่าให้แสดง H ในช่อง Flag หากน้อยกว่าแสดง L
แต่ต้องไปลงข้อมูลใน "ค่าปกติ(ตัวเลข)" ของ LAB แต่ละตัวด้วยนะครับ จึงจะตรวจสอบได้ถูกต้อง ให้ใส่ในทั้ง 2 เพศเลยครับ เพราะจะตรวจสอบเพศก่อน แล้วค่อยไปเทียบกับค่าปกติ
หากไม่ใส่ค่าใน "ค่าปกติ(ตัวเลข)" จะแปรผลว่าเป็น H หมดเลยครับ

ปล. ฝาก อ.อ๊อดช่วยดู DBText11 ด้วย เขียนอย่างไรให้สวยงาม
เดิมใช้ If...then...else ซ้อนกันหลายชั้น แล้วไม่สามารถแสดงผลได้หากมีการตรวจสอบเพศ
ตอนนี้ใช้ case....of แทน ก็สามารถตรวจสอบได้

คราวนี้ต่อไปหากเพื่อการตรวจสอบกับค่าวิกฤตอีก จะต้องซ้อน If อีก จะกำหนด begin...end อย่างไรให้ ทำงานได้
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 02, 2009, 23:54:33 PM
ตอนแรกใช้ If...then...else
procedure DBText11OnGetText(var Text: String);
begin
  If DBPipeline['result_type'] = 0 then
    If DBPipeline['sex'] = 1 then
      If DBPipeline['lab_order_result'] < DBPipeline['range_check_min'] then
        Text := 'L'
      else
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max'] then
          Text := 'H'
        else
          Text := ''
    else
      If DBPipeline['lab_order_result'] < DBPipeline['range_check_min_female'] then
        Text := 'L'
      else
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max_female'] then
          Text := 'H'
        else
          Text := '';
end;
ไม่สามารถแสดงผลได้ถูกต้องหาก sex <> 1

เลยเปลี่ยนมาใช้แบบนี้
procedure DBText11OnGetText(var Text: String);
begin
  If DBPipeline['result_type'] = 0 then
  begin
    case DBPipeline['sex'] of
    1: If DBPipeline['lab_order_result'] < DBPipeline['range_check_min'] then
        Text := 'L'
      else
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max'] then
          Text := 'H'
        else
          Text := '';
    2: If DBPipeline['lab_order_result'] < DBPipeline['range_check_min_female'] then
        Text := 'L'
      else
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max_female'] then
          Text := 'H'
        else
          Text := '';
    end;
  end;
end;

เข้าใจว่าคงต้องใส่ begin...end; ครอบ if บางช่วง แต่ยังไม่รู้ว่าจะใส่ตรงไหนดี ใช้ได้บ่อยแค่ไหน
เดี๋ยวคืนนี้จะทดลองหาคำตอบก่อนครับ  ;D
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 03, 2009, 00:12:53 AM
ลองใส่ begin...end แบบมั่ว ๆ (น่าจะเป็น) ไล่ไปไล่มา ได้แบบนี้ครับ
procedure DBText11OnGetText(var Text: String);
begin
  If DBPipeline['result_type'] = 0 then
  begin
    If DBPipeline['sex'] = 1 then
    begin
      If DBPipeline['lab_order_result'] < DBPipeline['range_check_min'] then
        Text := 'L'
      else
      begin
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max'] then
          Text := 'H'
        else
          Text := '';
      end;
    end
    else
    begin
      If DBPipeline['lab_order_result'] < DBPipeline['range_check_min_female'] then
        Text := 'L'
      else
      begin
        If DBPipeline['lab_order_result'] > DBPipeline['range_check_max_female'] then
          Text := 'H'
        else
          Text := '';
      end;
    end;
  end;
end;

ดู ๆ แล้ว ไม่รู้ว่าเกินความจำเป็นตรงไหนบ้างหรือเปล่า แต่ run ได้
ถ้าเทียบกับ case..of แล้ว ยาวกว่า ดูแล้วงงกว่า...เฮ้อ
ท่านไหนว่างช่วยดูหน่อยครับ (ชอบใช้ If มากกว่า case...of แต่สงสัยต้องเปลี่ยนใจซะแล้ว :D )
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: thannawe ที่ ธันวาคม 03, 2009, 00:52:18 AM
สุดยอดเลยครับ อ.โก้  :D ;) ;D
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: kungkung ที่ ธันวาคม 15, 2009, 23:42:40 PM
ขอบคุณครับ  สุดยอดอีกแล้ว
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: atit ที่ ธันวาคม 18, 2009, 18:20:48 PM
พี่โก้ครับเพิ่มเติมส่วนที่การรายงานเป็นตัวอักษรครับมันไม่มีมากกว่าหรือน้อยกว่าครับมีแต่ <> หรือ not like "%ค่าปรกติที่เราตั้งไว้%" คงต้องรบกวนเพิ่มเติมจุดนี้ด้วยครับ ;D
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: atit ที่ ธันวาคม 18, 2009, 18:25:02 PM
หรือไม่ก็อาจต้องกำหนดเงื่อนไข ว่า ให้แสดงกรณีที่ติ๊กถูกว่าการรายงานเป็นแบบตัวเลขเท่านั้น ถ้าเป็นแบบตัวอักษร ไม่ต้องแสดง มาครอบใว้อีกทีครับ ;D
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 18, 2009, 22:56:18 PM
พี่โก้ครับเพิ่มเติมส่วนที่การรายงานเป็นตัวอักษรครับมันไม่มีมากกว่าหรือน้อยกว่าครับมีแต่ <> หรือ not like "%ค่าปรกติที่เราตั้งไว้%" คงต้องรบกวนเพิ่มเติมจุดนี้ด้วยครับ ;D
กำลังว่าจะทำครับ เดี๋ยวขอตั้งตัวก่อน  :D :D :D


หรือไม่ก็อาจต้องกำหนดเงื่อนไข ว่า ให้แสดงกรณีที่ติ๊กถูกว่าการรายงานเป็นแบบตัวเลขเท่านั้น ถ้าเป็นแบบตัวอักษร ไม่ต้องแสดง มาครอบใว้อีกทีครับ ;D

ผมเลือกเฉพาะที่เป็นตัวเลขอยู่แล้วครับ ดังคำสั่งข้างล่างนี้
procedure DBText11OnGetText(var Text: String);
begin
  If DBPipeline['result_type'] = 0 then
  begin
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 19, 2009, 15:38:39 PM
ตอนนี้แก้ไขด้วยวิธีนี้ไปก่อนครับ
http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=12902.msg92516#msg92516

update lab_items set result_type=1 where ((range_check_min is null) or (range_check_max is null) or (range_check_min_female is null) or (range_check_max_female is null))
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ ธันวาคม 19, 2009, 17:30:58 PM
หลังจากนั้นตามด้วย
update lab_items set range_check="Y" where result_type =0
เพื่อปรับปรุงให้โปรแกรมเตือนเมื่อค่าไม่อยู่ในช่วงของค่าปกติ อาจจะเข้าไปติ๊กในหน้ารายการ LAB ก็ได้นะครับ ตรงช่อง "เตือนเมื่อมีค่าผิดปกติ"
เพราะ report ตัวต่อไปจะตรวจสอบตรงนี้ด้วย
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: udomchok ที่ สิงหาคม 22, 2013, 18:06:19 PM
ปรับปรุงล่าสุด
ปรับการแสดงผลรายการ HIV ต่าง ๆ จากเดิม fix code เปลี่ยนเป็นอ่านจากชื่อ ต้องมีคำว่า HIV ในชื่อ LAB
หัวข้อ: Re: ใบรายงานผล LAB
เริ่มหัวข้อโดย: yossak ที่ ตุลาคม 14, 2013, 13:44:12 PM
ไม่มีแบบที่เป็น Custom Repost หรือครับต้องการมากเขียนเองแล้วมันแสดงข้อมูลออกมาครับ