แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - BlueEye

หน้า: [1]
1
GUI (DFM) ของ script เราสามารถใช้ IDE ของ delphi ช่วยเรื่องความสวยงามได้ครับ มีหลาย component ที่ใช้ได้เช่น table, list, group box, tab, label ฯลฯ แต่ก็ไม่ได้ทั้งหมด .... เราสร้างด้วย IDE แล้ว copy มาใส่ลงใน DFM ของ script ได้

2
หมายถึงคิวรี่ใช่มั้ยครับ

หลักการคือ select คอลัมน์ ที่เกี่ยวข้องออกมาให้ครบถ้วนถูกต้องเสียก่อน แล้วจึงคำนวนด้วยใช้ฟังก์ชั่นคณิตศาสตร์เหล่านี้ได้เลยครับ เช่น

โค๊ด: [Select]
CASE WHEN q1.sex = "1" THEN
          CASE WHEN q1.cr > 0.9 THEN ROUND((141*(POW((q1.cr/0.9),(-1.209))))*(POW(0.993,TIMESTAMPDIFF(YEAR, q1.birthday, IF(q1.report_date, q1.report_date, s.vstdate)))), 2)
          ELSE ROUND((141*(POW((q1.cr/0.9),(-0.411))))*(POW(0.993,TIMESTAMPDIFF(YEAR, q1.birthday, IF(q1.report_date, q1.report_date, s.vstdate)))), 2) END
    ELSE CASE WHEN q1.cr > 0.7 THEN ROUND((144*(POW((q1.cr/0.7),(-1.209))))*(POW(0.993,TIMESTAMPDIFF(YEAR, q1.birthday, IF(q1.report_date, q1.report_date, s.vstdate)))), 2)
          ELSE ROUND((144*(POW((q1.cr/0.7),(-0.329))))*(POW(0.993,TIMESTAMPDIFF(YEAR, q1.birthday, IF(q1.report_date, q1.report_date, s.vstdate)))), 2) END
    END, ""), IF(s.height > 0 AND q1.cr > 0 , ROUND(0.413 * (s.height / q1.cr), 2), 0)) AS egfr

3
ถ้าหมายถึงฟังก์ชั่นของ delphi จะใช้ Sqrt(number)

จากนิยาม
x = squre root n หรือ
x = n ยกกำลัง 1/2

ถ้าหมายถึง คิวรี่ MySQL จะใช้ POW(number, 1/2)




4
HOSxP : XE / Re: vn-script hosxp xe
« เมื่อ: กันยายน 27, 2024, 08:10:37 AM »
ไม่แน่ใจว่า script ของ XE หลักการเหมือน V3 หรือเปล่านะครับ....
ปกติ จะเขียนสคริปที่ Main Unit เพื่อให้เรียกใช้ Unit อื่นๆ ถ้าตรงเงื่อนไข
เพราะฉะนั้น Main unit จะไม่ใช่ form ส่วน unit อื่น จะเป็น form
ที่ Main unit จะเขียนตรวจสอบเงื่อนไขต่างๆ แล้วก็เปิด form ทั้งหมดที่ตรงเงื่อนไข ตามลำดับ

5
หมายความว่า ถ้าจะใช้ HosXP v3 จะต้องใช้เครื่องสแกนลายนิ้วมือที่จะต้องติดตั้ง driver พร้อมลงทะเบียน license ก่อนจึงจะใช้ได้ใช่มั้ยครับ
ในขณะเดียวกัน.... ถ้าเครื่องสแกนลายนิ้วมือที่ไม่มี license จะต้องติดตั้ง driver และต้องใช้ HosXP v4 ในการสแกนเก็บลายนิ้วมือเท่านั้นใช่มั้ยครับ

6
script ที่ใช้แสดงหลังจากคีย์ยา ยังไม่มีครับ ยังมีแค่ script ที่ระบบเป็นคนสร้างให้เราเท่านั้น

7
Delphi / Pascal / Re: สอบถามวิธีการเรียก procedure event clik ครับ
« เมื่อ: พฤศจิกายน 17, 2023, 15:38:48 PM »
โค๊ด: [Select]
  try
    RunHOSxP_ScriptProgram('CHECK_TB');
    if tmdep then RunHOSxP_ScriptProgram('CHECK_PTDEPART');
    RunHOSxP_ScriptProgram('HSRIP_NCD_SCRIPT_V8');


    //if FileExists('C:\Program Files (x86)\hsrip\HOSxPNotify\HOSxPNotify.exe') then
      //WinEXEC('C:\Program Files (x86)\hsrip\HOSxPNotify\HOSxPNotify.exe '+cid);

    //if FileExists('C:\Program Files\hsrip\HOSxPNotify\HOSxPNotify.exe') then
      //WinEXEC('C:\Program Files\hsrip\HOSxPNotify\HOSxPNotify.exe '+cid);

    //if bpdep then RunHOSxP_ScriptProgram('SmartBP');

  except
    on E : Exception do Exit;
  end;

ตรงนี้คือ สั่งให้มันเปิด form ชื่อ "SmartBP" ของ v4 ผมยังไม่เคยเข้าไปดู อาจจะแตกต่างหรือเปล่าไม่รุ้นะครับ เอาเป้นแค่ ไอเดียก็ได้

โค๊ด: [Select]
RunHOSxP_ScriptProgram('SmartBP');

8
Delphi / Pascal / Re: สอบถามวิธีการเรียก procedure event clik ครับ
« เมื่อ: พฤศจิกายน 14, 2023, 12:37:55 PM »
เงื่อนไข สามารถใส่ได้ 2 จุดคือก่อน form2.open กับ หลังจาก open แล้วให้เขียนเงื่อนไขที่ constructure ของ form ก็ได้

แต่ปกติ ผม จะทำ vnscript ขึ้นมาเป็น main ก่อน ที่จะไปเปิด form อื่น เพราะจะได้ตรวจสอบเงื่อนไข ก่อนที่จะ open form อื่นๆที่ต้องการ

9
ถ้าไม่เข้าเงื่อนไขก็ไม่ต้องแสดงฟอร์มเลยดีกว่ามั้ยครับ

คิวรี่ในเรื่องเดียวกัน ใช้คิวรี่เดียวก็ครอบคลุมได้นะครับ

10
HOSxP : XE / Re: ดึง authen code จาก สปสช.
« เมื่อ: กรกฎาคม 02, 2023, 09:15:27 AM »
ตอนนี้ หลายหน่วยบริการน่าจะใช้วิธีเขียนโปรแกรมเพื่อดึง authen code เองครับ เพราะยังไม่มีวิธีแบบรวดเดียวมาหมด แต่วิธีการนี้ก็อาจจะทำให้ สปสช เกิดอาการหน่วงของระบบโดยรวมได้... ทั้งนี้ก็ขึ้นอยู่กับว่า แต่ละหน่วยบริการจะ hard core แค่ไหนในการดึงข้อมูล

11
HOSxP PCU / Re: เชื่อมต่อเครื่อง Server ไม่ได้
« เมื่อ: พฤษภาคม 15, 2023, 08:02:07 AM »
จาก error บอกว่ามีการ connection เยอะเกินไปกว่าที่ config เอาไว้ ต้องเข้าไปแก้ max_connection ให้มากขึ้น แต่ต้องคำนึงถึง performance ของ server ด้วยว่าสามารถรองรับได้มากน้อยแค่ไหน ปัญหานี้อาจจะเกิดจากมีจำนวน user เยอะมากเกินไปก็ได้.... แต่... อาจจะเกิดจากการที่มี connection ของ user ค้างก็ได้... หรือบางครั้งอาจจะเกิดจากพวกโปรแกรมอื่นๆที่ connection แล้วเยอะเกินไปก็ได้ (LAB, XRAY, IOT....) .... หรืออาจะเกิดจากการคุกคามอันไม่พึงประสงค์ก็ได้

12
HOSxP : XE / Re: ส่ง MOPH Claim ไม่ได้
« เมื่อ: เมษายน 27, 2023, 07:52:43 AM »
จาก error นี้เหมือนว่า user นี้ไม่มีสิทธิ์ในการทำงานส่วนนี้ เพราะฉะนั้นต้องเพิ่มสิทธิ์ให้ แต่ ถ้ามีสิทธิ์อยู่แล้วให้เข้าไปเปลี่ยน password

สถานการณ์ปัจจุบันคือ เราต้องเข้าไปเปลี่ยน password ทุกๆสัปดาห์ เพื่อความปลอดภัยครับ เพราะฉะนั้นถ้าเจอปัญหานี้ ให้เข้าไปเปลี่ยน password ใน Moph account แล้วอัพเดต password ใน hosxp

13
Delphi / Pascal / Re: การใช้งานระบบ Script Program ใน HOSxP XE / PCU XE
« เมื่อ: มีนาคม 23, 2023, 07:59:30 AM »
เยี่ยมเลยครับ รอแบบนี้มานานเลย

14
รบกวน BMS ช่วยแก้ไข query ตัวส่งออก 43 แฟ้ม ในหัวข้อ AIPN ตรงส่วนของ CareAs ด้วยครับ มันคิวรี่คอลัมน์ที่ไม่มีอยู่.... มันเลยส่งผลให้ CareAs ออกมาเป็น M ทุกกรณีเลย แต่ รพ ผม ต้องส่งด้วย B ครับ

15
เครื่องคอมพิวเตอร์ Join Domain เข้าใช้งานสิทธิ์ User ทั่วไป เมื่อพิมพ์ตัวอักษรในช่อง ICD Code Map จากหน้าห้องตรวจแพทย์ (Tap วินิจฉัย) โปรแกรม HosXP ปิดตัวเองลงทันที ไม่ได้มี Error message ใดๆ แต่ถ้าเข้าใช้งานด้วยสิทธิ์ Administrator ไม่เกิดปัญหา..... ลองตั้ง permission แบบ Everyone full controll แล้ว ก็ไม่ผ่าน ลองลบโปรแกรมแล้วลงใหม่ก็ไม่ผ่าน ปกติใช้ได้ตลอด เพิ่งเป็นเมื่อวาน Structure ไม่ล่าสุด ประมาณ ต้นปี 65

[ Guests cannot view attachments ]

16
สามารถทำได้ครับ แต่ควรระมัดระวัง เพราะสคริปจะทำงานทุกครั้งที่ตรงกับเงื่อนไข ซึ่งอาจจะเกิดการ update หรือ insert มากเกินความจำเป็นครับ

17
แจ้งข้อผิดพลาดการทำงานของ HOSxP V3 / Error: is not valid integer value
« เมื่อ: พฤศจิกายน 15, 2021, 10:33:37 AM »
ปัญหาเรื่อง "is not valid integer value" มีบทสรุปการแก้ปัญหานี้หรือยังครับ ผมเจอปัญหานี้ที่หน้าบันทึก "ลงทะเบียนผู้ป่วยใหม่"

18
ROUND(sum( ov.income), 2)

19
ตรงๆเลยคงไม่มีมั้งครับ แล้วบางที login เอาไว้แต่ยังไม่ได้ทำอะไรเลยก็เป็นได้
ถ้าตรวจสอบเวลาการทำงานจากการบันทึกข้อมูล เช่น screen, visit หรือตามต้องการ แบบนี้จะไกล้เคียงกับความต้องการมั้ยครับ จะได้ทั้งเวลา และปริมาณ

20
ให้ลบรายการในตาราง hospcode ที่มีข้อมูลในฟิลดิ์ hospcode='2013-' ออกก่อนแล้วค่อยกด auto update
หรือใช้คิวรี่นี้ลบก็ได้ครับ

โค๊ด: [Select]
DELETE FROM hospcode WHERE hospcode = '2013-'

21
Delphi / Pascal / Re: ่ทำ shellexecute ไม่ผ่าน
« เมื่อ: ธันวาคม 18, 2018, 13:26:36 PM »
เป็นไฟล์ตัวอย่างนะครับ ถ้าจะทำใช้จริง ต้องตรวจสอบก่อนว่าถ้ามี process ของไฟล์นี้ run อยู่ จะต้องไม่เปิดซ้ำ หรืออาจจะต้องเปิดเป็น thread ใหม่เลย

22
ขออภัยครับ ผมนึกว่ายังมี LIS แบบที่ไม่ต่อผ่าน Gateway ของ BMS ด้วย

23
ปกติ LIS ก็จะมีการ select, update, delete, แค่บางตารางเท่านั้น เพราะฉะนั้นก็ควรจะให้ สิทธิ์การใช้งานเท่าที่จำเป็นครับ
โดยการสร้าง user สำหรับเข้าถึงฐานข้อมูลของ LIS โดยเแพาะ และกำหนด user privilages (select, update, delete) ให้กับตารางที่ LIS ต้องการ

24
HOSxP PCU / Re: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« เมื่อ: มิถุนายน 27, 2018, 13:38:38 PM »
ที่ให้มาเป็น code เลข 7 หลัก แล้วก็โจทย์บอกว่าต้องการหัตการ ก็เลยเดาว่าน่าจะเป็น nondrugitems มากกว่า
แล้วโจทย์บอกว่าเอาเด็กอายุ 12 เท่านั้น ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
หรือว่า เอาที่เท่ากับหรือต่ำกว่า 12 ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) <= 12
หรือว่า ตั้งแต่ 12 ขึ้นไป ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) >= 12

โค๊ด: [Select]
SELECT p.hn,p.pname,p.fname,p.lname,
TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) AS _age,
v.vstdate,i.icode,n.`name`
FROM
patient AS p
INNER JOIN ovst AS v ON p.hn = v.hn
INNER JOIN opitemrece AS i ON v.vn = i.vn
INNER JOIN nondrugitems AS n ON i.icode = n.icode
WHERE v.vstdate BETWEEN "2017-10-01" AND "2018-06-30" AND
i.icode IN ("2330011", "2338610") AND
TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
/*
แล้วโจทย์บอกว่าเอาเด็กอายุ 12 เท่านั้น ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
หรือว่า เอาที่เท่ากับหรือต่ำกว่า 12 ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) <= 12
หรือว่า ตั้งแต่ 12 ขึ้นไป ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) >= 12
หรือ ......
*/

จากคิวรี่เป็นการใช้อายุ ณ วันที่ visit ก็เลยสงสัยต่อว่า ถ้าเด็กทำหัตการมากกว่า 1 ครั้งในช่วงเวลาที่ต้องการ แต่ ครั้งหลังเด็กอายุ มากกว่า 12 ปีบริบูรณ์แล้วจะต้องเอามามั้ย แต่คิวรี่นี้ก็ยังไม่ได้คำนวนอายุแบบละเอียดครับ แค่เอามาใช้เป็นแนวทางเฉยๆ เพราะถ้าต้องคำนึงถึงอายุ เดือนที่เกินมา หรือวันที่เกินมาจากอายุบริบูรณ์จะต้องเอามั้ยด้วย

25
MySQL / Re: คำสั่งดึงข้อมูลล่าสุด
« เมื่อ: มิถุนายน 15, 2018, 15:20:33 PM »
แบบใช้ provis_labcode ครับ

โค๊ด: [Select]
SELECT q2.vstdate, q2.hn, q2.lab_order_result FROM
(SELECT q1.*
, @rnk := IF(@prevn = q1.hn, @rnk + 1, 1) AS rnk
, (@prevn := q1.hn) AS prevn
FROM(SELECT v.vstdate,h.hn,o.lab_order_result,i.provis_labcode
FROM ovst AS v
INNER JOIN lab_head AS h ON v.vn = h.vn
INNER JOIN lab_order AS o ON h.lab_order_number = o.lab_order_number
INNER JOIN lab_items AS i ON o.lab_items_code = i.lab_items_code
, (SELECT @prevn := "", @rnk := 0) AS var1
WHERE i.provis_labcode = "0531601" AND
v.vstdate BETWEEN "2017-10-01" AND "2018-09-30"
ORDER BY v.hn ASC, v.vstdate DESC) AS q1) AS q2
WHERE q2.rnk = 1

26
MySQL / Re: คำสั่งดึงข้อมูลล่าสุด
« เมื่อ: มิถุนายน 15, 2018, 08:33:46 AM »
แก้เลข 319 ให้เป็นรหัส HBA1C ของโรงพยาบาลด้วยนะครับ
โค๊ด: [Select]

SELECT q2.vstdate, q2.hn, q2.lab_order_result FROM
(SELECT q1.*
, @rnk := IF(@prevn = q1.hn, @rnk + 1, 1) AS rnk
, (@prevn := q1.hn) AS prevn
FROM(SELECT v.vstdate,h.hn,o.lab_order_result
FROM ovst AS v
INNER JOIN lab_head AS h ON v.vn = h.vn
INNER JOIN lab_order AS o ON h.lab_order_number = o.lab_order_number
, (SELECT @prevn := "", @rnk := 0) AS var1
WHERE o.lab_items_code = "319" AND
v.vstdate BETWEEN "2017-10-01" AND "2018-09-30"
ORDER BY v.hn ASC, v.vstdate DESC) AS q1) AS q2
WHERE q2.rnk = 1


27
Delphi / Pascal / Re: ่ทำ shellexecute ไม่ผ่าน
« เมื่อ: มิถุนายน 09, 2018, 11:25:25 AM »
ลองเขียน app เอง โดยใช้ delphi แล้วเอาไปไว้ในโฟลเดอร์สักที่นึง แล้ว ให้ hosxp เรียกใช้ ผ่าน script ของ hosxp โดยส่งพารามิเตอร์ไปด้วย ในที่นี้คือ vn กับ hn เมื่อ execute ก็ได้ออกมาตามรูปที่แนบมาครับ

ถ้าจะเปิด web ก็ได้นะครับ ประมาณนี้

โค๊ด: [Select]
WinEXEC('C:\Program Files\Google\Chrome\Application\chrome.exe https://some-app.com?vn='+fvn+'&hn='+fhn);



28
สร้างฐานข้อมูลขึ้นมา (ตั้งชื่ออย่างไรก็ได้ ให้รู้ว่านี่คือสำหรับ 43แฟ้ม) แล้วก็ ตั้งค่าในช่องต่างๆชี้ไปยังฐานข้อมูลที่สร้างขึ้น... แนะนำว่าให้สร้างฐานข้อมูลเอาไว้ที่ server ที่ RUN อยุ่จริง เผื่อว่าจะไปส่งออก 43 แฟ้ม ในเครื่องคอมพิวเตอร์เครื่องอื่นครับ

29
สอบถามเพิ่มเติมครับ
สคริปของคุณจากที่ดูคือ เมื่อสคริปทำงาน จะแสดง MessageBox ขึ้นมาพร้อมปุ่ม Yes กับ No
ซึ่งถ้าแค่นี้ เมื่อกดปุ่ม Yes หรือ No มันก็จะปิด MessageBox ลงเท่านั้นอยู่แล้ว

ผมไม่แน่ใจว่าความต้องการที่แท้จริงคือ เมื่อสคริปทำงาน จะมี Form แสดงข้อมูล (ไม่ใช่ MessageBox) โดยที่ใน form จะมีปุ่มกด ใช่หรือไม่ แล้ว ให้ใช้ปุ่มที่อยู่ใน Form กด yes or no หรือเปล่า

พอดีวันนี้เย็นแล้วต้องรีบกลับก่อน พรุ่งนี้จะมาถกปัญหาเพิ่มนะครับ

30
ถ้าคิวรี่ออกมาแค่ row เดียว field เดียว จะใช้แบบนี้ก็ได้ครับ
fhn := GetSQLdata('select hn from ovst where vn = "'+fvn+'"');

----------------------------------------------------------------------------------
แต่ถ้าต้องการคิวรี่ออกมา row เดียว แต่หลาย field ก็ใช้แบบนี้ครับ

procedure .........
var
   sql, f1, f2: string;
   tmp: TClientDataset;

begin
   sql := 'SELECT field1, field2, ... FROM ..............';
   tmp.data := HOSxP_GetDataSet(sql);

   //เวลาจะใช้งานก็แบบนี้ครับ
   f1 := tmp.FieldByName('field1').AsString;
   f2 := tmp.FieldByName('field2').AsString;
   //ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
end;
----------------------------------------------------------------------------------
ถ้า result คิวรี่ออกมามีหลาย row
ก็เอา result ที่ได้มาใส่เข้าไปใน client dataset เลยก็ได้ ****************
หรือใช้วิธีการ loop เอาข้อมูลมาใช้ หรืออาจจะคำนวนออะไรก่อนก็ได้ครับ

procedure .........
var
   sql, f1: string;
   tmp: TClientDataset;

begin
   sql := 'SELECT field1, field2, ... FROM ..............';
   try
      tmp.data := HOSxP_GetDataSet(sql);
      while not tmp.eof do begin

               f1 := tmp.FieldByName('field1').AsString;
               tmp.Next;
          end;
   except
      on E : Exception do Exit;
   end;
end;

----------------------------------------------------------------------------------
โดยคำนึงถึงการ except error เอาไว้ด้วยเพื่อป้องกันการผิดพลาดของโปรแกรม

31
พอจะมีอยู่ครับ ถ้าสนใจ add line มาคุยก่อนได้ครับ ชื่อ หนุ่ม (NOOM)
line id: i3lueeye

32
จากโรงพยาบาลไหนครับ แสดงตัวด้วยครับ  ;D

33
มิได้ครับ....ประเด็นผมอยู่ที่บันทัดสุดท้ายเท่านั้นครับ ว่าการตัดสินใจที่จะ update นั้นมีอะไรเพิ่มเข้ามาบ้าง
โดยส่วนตัวแล้วต้องการ update ทุกครั้งที่มี version เข้ามาอยู่แล้ว และกระบวนการทำงานก็ทราบดีอยู่แล้ว
ปัญหาที่กล่าวไปแล้วนั้นผมสามารถแก้ไขได้ด้วยตัวเองอยู่แล้ว แต่มันล่าช้าเกินไปสำหรับผู้ใช้งาน

ผมไม่สามารถ update ได้ในทุก version (ทั้งที่ใจอยาก) ถ้ามีการยืนยันการปรับปรุงจาก hosxp น่าจะเป็นตัวช่วยให้ผมสามารถไปคุยกับผู้ใช้งานได้ง่ายขึ้น
ทุกวันนี้ผมก็ไม่ได้ชนกับผู้ใช้งานโดยตรงหรอก แต่ก็ไม่สามารถจริงๆ เรื่องความแตกต่างของ version นั้นผมก็เข้าใจมาตั้งแต่ต้น

ผม implement ระบบมาตั้งแต่แรก ไม่ได้ใช้บริการของ bms เลยแม้แต่ครั้งเดียว (ขออภัยมาไว้ ณ ที่นี้)
ยังไงถ้าทาง hosxp จะมี chang log เหมือนเมื่อก่อน จะเป็นพระคุณอย่างสูงเลยครับ

34
ผมขอเพิ่มเติมที่โพสเดิมนะครับ.... (ยังยืนยันเรื่อง commercial)
เรื่อง full backup มีแน่นอนครับ...
เรื่องตารางที่เพิ่ม mater table ที่เปลี่ยน ยังไม่เจอปัญหาอะไรร้ายแรงหรอกครับ (แต่ก็เจอบ้างพอเป็นพิธี)
เรื่อง app ที่เขียนเองแล้วกระทบ ผมก็ต้องปรับ app และ compile ใหม่เท่านั้นเอง (แต่ไม่ค่อยทันใจผู้ใช้สักเท่าไหร่)
web app ง่ายหน่อย...
พอเป็นระบบเปิด เชื่อมั้ยครับว่า app ที่สร้างขึ้นเองมีเยอะพอสมควรเลยนะครับ

แต่ที่เจอปัญหาใหญ่ ... ยกตัวอย่าง refer online นะครับ
พอ update structure มันเพิ่ม database ใหม่ขึ้นมาอีกตัว ตอนแรกผมไม่ได้ใช้สิทธิ์ admin หรอกนะครับ ในการ update มันจึง create database ไม่ได้ สอบถามเจ้าหน้าที่ bms ก็ยังไม่ได้คำตอบในตอนแรก จนต้องไปดูตัวอย่างของ ร.พ. อื่น จนได้รู้ว่ามันเป็นอย่างนี้นี่เอง
สิ่งที่เกิดขึ้นก็คือไม่สามารถใช้งาน refer online ได้ในตอนแรก....(หลายวันอยู่)

ตอนหลังผมก็เลย update ด้วยสิทธิ์ admin (เรื่องนโยบายของระบบจึงปรับเปลี่ยนไปบ้าง)

ผมเข้าใจว่าสิ่งเหล่านี้สามารถแก้ปัญหาได้ไม่ยากนัก แต่เพื่อความสะดวกต่อลูกค้า โดยเฉพาะ admin ของทาง ร.พ. ไม่ได้ดูและเรื่องระบบเพียงอย่างเดียวครับ งานหลักจะกลายเป็น support user ซะมากกว่าด้วยซ้ำ ร.พ. ใหญ่ๆ บางแห่งยัง update structure ไม่ได้เลยครับ เพราะฉะนั้นเรื่องการ update structure บ่อยๆคงเป็นไปได้ยาก

ในการ update แต่ละครั้ง จึงน่าจะมีตัวช่วยในการตัดสินใจแก่ ผู้ดูและระบบด้วยครับ....

35
ปัญหาและข้อเสนอแนะครับ...
ปัญหาที่เจอคือ เมื่อ Update structure ไม่อาจทราบได้ว่า update ส่วนใดบ้าง ทำให้ผู้ดูแลระบบไม่สามารถ config ระบบให้ถูกต้องได้ เช่น..
1. การเพิ่ม database ใหม่ ซึ่งมีผลกับการ config ค่า connection และสิทธิ์ในระบบ
2. การปรับหรือเปลี่ยนหรือเพิ่มโครงสร้างตาราง กระทบต่อ report ที่สร้างขึ้น โดยเฉพาะเงื่อนไขที่ซับซ้อนมากๆ....
3. การเพิ่มหรือลบหรือเปลี่ยนข้อมูลใน master table กระทบต่อ report
4. อันนี้ยังไม่เจอ แต่เผื่อไว้.. ในกรณีที่เขียน application แล้วเกิดปัญหาจาก 3 ข้อข้างบน

ข้อเสนอแนะ จึงอยากให้มีการทำ Change log ในส่วนของโครงสร้างที่จำเป็น เช่น การเพิ่ม database หรือการเปลี่ยนแปลงเงื่อนไขที่สำคัญๆของระบบ เพื่อลดความเสี่ยงต่อการสูญเสียของข้อมูลด้วยครับ
ทดสอบ update structure ในเครื่อง notebook หรือ slave ก่อน ก็จะเห็นว่ามีการเปลี่ยนแปลงโครงสร้าง หรือเพิ่ม field เพิ่ม table อะไรบ้าง
ลองดูนะครับ

ก่อน commercial ก็ดูเองแหละครับ.. แต่ไหนๆก็เป็น commercial แล้วก็เลยคิดว่าน่าจะเป็นมาตราฐานในการ development (เคยถามเจ้าหน้าที่ BMS แล้วยังตอบไม่ได้เลยครับ)

36
ปัญหาและข้อเสนอแนะครับ...
ปัญหาที่เจอคือ เมื่อ Update structure ไม่อาจทราบได้ว่า update ส่วนใดบ้าง ทำให้ผู้ดูแลระบบไม่สามารถ config ระบบให้ถูกต้องได้ เช่น..
1. การเพิ่ม database ใหม่ ซึ่งมีผลกับการ config ค่า connection และสิทธิ์ในระบบ
2. การปรับหรือเปลี่ยนหรือเพิ่มโครงสร้างตาราง กระทบต่อ report ที่สร้างขึ้น โดยเฉพาะเงื่อนไขที่ซับซ้อนมากๆ....
3. การเพิ่มหรือลบหรือเปลี่ยนข้อมูลใน master table กระทบต่อ report
4. อันนี้ยังไม่เจอ แต่เผื่อไว้.. ในกรณีที่เขียน application แล้วเกิดปัญหาจาก 3 ข้อข้างบน

ข้อเสนอแนะ จึงอยากให้มีการทำ Change log ในส่วนของโครงสร้างที่จำเป็น เช่น การเพิ่ม database หรือการเปลี่ยนแปลงเงื่อนไขที่สำคัญๆของระบบ เพื่อลดความเสี่ยงต่อการสูญเสียของข้อมูลด้วยครับ

37
ระบบเตือน vn_lock แจ้งเตือนว่ามีผู้ใช้งานใช้งาน vn นี้อยู่ ซึ่งระบบเป็นไปตามที่มันควรจะเป็นปกติ

.......

แต่บ่อยครั้งเหมือนกันที่มันแจ้งเตือนทั้งๆ ที่ ไม่มี ผู้ใช้คนนั้นอยู่ในระบบ ......
หรือผู้ใช้คนนั้น login เข้าระบบมาเมื่อหลายวันก่อน ซึ่งตอนแรกก็ยังคิดว่ามันค้างอยู่ตรงไหน แต่ก็ไม่มีรายการ login ค้างของผู้ใช้คนนี้เลย

...........

ในตาราง vn_lock ก็เคลียร์เรียบร้อยแล้วครับ แต่พอมาอีกสักพักนึงก็จะเตือนขึ้นมาอีก ..... (คนเดิม)
จึงขอความกรุณาช่วยวิเคราะห์สาเหตุด้วยครับ

ขอบคุณครับ

38
Report Exchange / Re: GetSQLStringData
« เมื่อ: กุมภาพันธ์ 20, 2012, 10:29:24 AM »
ขอบคุณมากครับสำหรับคำแนะนำ ตอนนี้สามารถใช้งานได้แล้วครับ ....
สรุปว่าต้องเปิดพร้อมกัน จึงใช้งานได้ครับ
แต่ผมสงสัยว่า...
เมื่อก่อนถ้าเปิดพร้อมกันกับ HosXP จะเขียน Report แล้ว error ครับ ผมเลยต้องเปิด HosXP ก่อนแล้วปิดมันลงไป จึงจะเขียน Report ได้

39
Report Exchange / GetSQLStringData
« เมื่อ: กุมภาพันธ์ 20, 2012, 10:11:02 AM »
สวัสดีครับ ....
ผมเจอปัญหาเรื่องการเขียนรายงานครับ...
คือว่า ผมไม่สามารถใช้ฟังก์ชั่น GetSQLStringData ได้ในตอนนี้ครับ โดยที่ผมเคยใช้ได้มาตลอดครับ
ผมลองอัพเดตเวอร์ชั่นหลายๆเวอร์ชั่นก็ยังใช้ไม่ได้ครับ

ตัวแปรที่ใช้ (Variable1OnCalc) ถ้าเปลี่ยนไปใช้ฟังก์ชั่นอื่นๆ หรือกำหนดเองก็สามารถใช้งานได้ปกติครับ
แต่ถ้าแทรกฟังก์ชั่น GetSQLStringData ก็จะเจอ error ตามรูปครับ



ผมลองแทรกฟังก์ชั่น GetSQLStringData ลงใน Event OnCreate ก็จะเจอ error เหมือนกันครับ
เลยคิดว่าน่าจะเป็นที่ฟังก์ชั่นนี้ไม่ได้ลงทะเบียนไว้น่ะครับ

40
คิดว่าตอนนี้ยังต้อง Insert เข้าไปเองตรงๆก่อนครับ โดยใช้ Query (ผมก็ทำอยู่)  ;D

41
Development / Update structure
« เมื่อ: ตุลาคม 14, 2011, 08:01:56 AM »
เมื่อวานตอนเย็นลองอัพเดต structure เวอร์ชั่น 3.54.10.11 รอจนต้องเปิดทิงไว้แล้วกลับบ้านก่อน เช้ามาปรากฏว่าได้ผลดังรูปครับ.....





ได้ลอง select count(*) as cc from serial where name='epidem_e1_2010_2' ก็ได้ผลลัพธ์ 1 ปกติครับ
ก่อนกลับก็ตรวจสอบ process ทุกๆอย่างก็ทำงานตามปกติ กำลังคิดว่าน่าจะเปฌนเพราะ connection timeout หรือเปล่า ถ้าอย่างนั้นอาจจะต้องปรับเพิ่ม คำถามก็คือควรจะเท่าไหร่ครับ

42
HosXP version 3.54.10.6

ข้อ 1 สงสัยเรื่องเมนูที่คลิกเข้าเพื่อเข้าหน้าจอ รายการกลุ่มเสี่ยงที่ต้องคัดกรอง.... 
จากรูปนี้....


Thanks: Ro  ฝากรูป

มาเป็นรูปนี้.....


Thanks: Ro  ฝากรูป

ข้อ 2 ข้อมูลที่อยู่ในหน้านี้ Combobox ไม่สามารถแก้ไขได้ใช่มั้ยครับ


Thanks: Ro  ฝากรูป

ข้อ 3 ในคอลัมน์ "คัดกรองครั้งสุดท้าย" จะแสดงวันที่ตามในรูปครับ ซึ่งไม่ใช่ข้อมูลที่คัดกรองจริง แต่ในข้อมูลจริงจะเป็นไปตามความจริง


Thanks: Ro  ฝากรูป

43
โปรแกรม Add-on HOSxP / Re: [ล่าสุด!!]Release!! HOSxP Queue Caller 14-07-2554
« เมื่อ: กรกฎาคม 21, 2011, 08:50:35 AM »
สวัสดีครับ... ผมชื่อ หนุ่ม จากโรงพยาบาลศรีประจันต์ จ.สุพรรณบุรี

ผมขอคำปรึกษาในเรื่อง Programming สักหน่อยครับ
เนื่องจากผมกำลังพัฒนาระบบเรียกคิวเพื่อใช้ภายในโรงพยาบาล ในตอนนี้กำลังทดสอบระบบมาได้ประมาณ 2 อาทิตย์แล้ว โดยในเฟสแรกนี้เน้นที่ Flow ที่ห้องการเงินไปห้องจ่ายยาเท่านั้น ผู้มารับบริการทุกคนจะต้องเดินไปที่แผนกการเงินก่อน แล้วจึงไปนั่งรอเรียกคิวที่หน้าห้องจ่ายยา ในตอนนี้จะมีระบบเท่านี้ก่อน โดยความสามารถของระบบจะมีเพียง

- ระบบพิมพ์หมายเลขคิว (ส่วนนี้ห้องการเงินใช้ โดยพิมพ์ใบสั่งยาที่มีหมายเลขไปที่ห้องจ่ายยา + พิมพ์บัตรคิวให้ผู้มารับบริการ)
- ระบบการเรียกหมายเลข (ตรงนี้ห้องจ่ายยาจะมีโปรแกรมสำหรับกดเรียกหมายเลข)
- ระบบการแสดงหน้าจอแสดงหมายเลข (รองรับการแสดงผลได้หลายจุดตามค่าที่ตั้งไว้ เสียงเรียกหมายเลขจะผูกติดกับระบบแสดงผลนี้)
- ระบบ Operator (เป็นตัวจัดการหมายเลข ในอนาคตจะเพิ่มจุดบริการที่ใช้ระบบนี้รวมเข้าเป็นตัวจัดการทั้งโรงพยาบาล)

ผมใช้การติดต่อทั้งระบบผ่าน Socket ที่ติดมากับ Delphi 2009 เนื่องจากผมยังใหม่มากกับ delphi จึงขอคำปรึกษาเรื่องการใช้ Socket นี้ว่าผมเดินมาถูกทางหรือเปล่าครับ

44
ขอบคุณสำหรับคำแนะนำครับ.... ;D

ผมยังไม่ได้ลองเปลี่ยนเครื่องพิมพ์อื่นดูเลยครับ เพราะตอนนี้ยังไม่มีเครื่องว่างๆเลย...

แต่ผมพอจะเดาสาเหตุว่าเกิดจากการที่ session ของ winxp ที่มันเกิน 10 น่ะครับ... หาดูในเวบก็มีคนเจอปัญหานี้เหมือนกัน แต่ก็ยังไม่ได้คำตอบที่สามารถแก้ปัญหาได้ทั้งหมด... มีบางคนแนะนำให้ใช้ Win server ไปเลย (ผมก็มีพร้อม Licence  แท้ด้วย เหอๆๆ) แต่ยังไม่ได้นำมาใช้เพราะกำลังคิดว่าผู้ใช้งานอาจจะไม่คุ้นเคยกับมัน เลยคิดว่าเอาไว้เป็นไม้ตายสุดท้าย.....

แต่ผมก็ยังสงสัยอยู่เหมือนกันว่า .... แล้วทำไมตอนผมต่อแบบ network โดยที่เกือบทุกเครื่องจะมี driver เป็นของตัวเอง ก็ยังเจอปัญหานี้อยู่ดี ซึ่งตอนนั้นผมสันนิษฐานว่าเป็นเพราะ Memory ของ Printer ไม่พอ (16 mb).... เลยนำมาต่อแบบผ่าน PC ปัญหากลับน้อยลง

ข้อสงสัยอีกข้อนึงก็คือ เวลาที่ HosXP มองไม่เห็นเครื่องพิมพ์ หรือตั้งค่าเครื่องพิมพ์โดยที่ไม่มีเครื่องพิมพ์อยู่จริงมันไม่น่าจะสั่ง Restart windows เลยนี่นา (เป็นเฉพาะตรงใบสั่งยา)

45
เนื่องจากที่โรงพยาบาลผมมีการใช้งานเครื่องพิมพ์ในการสั่งจ่ายยาเป็นจำนวนเกิน 10 session ของ Windows XP ในบางเวลา จนทำให้เครื่องที่ผู้สั่งพิมพ์มายังเครื่องที่เกินนี้จะเตือนว่าไม่พบเครื่องพิมพ์และปิด "HosXP" พร้อมทั้ง "Restrat windows" ใหม่ทุกครั้ง

ในตอนแรกผมใช้เครื่อง Printer แบบ network รุ่น HP 2035n โดยลองทั้งแบบให้ลูกข่ายติดตั้ง Driver ที่ตัวเอง และแบบ Share ผ่านเครื่องหลัก ก็ยังพบปัญหานี้บ่อยมาก.....(ครั้งนี้ผมสันนิษฐานว่าเป็นเพราะ Memory ของเครื่อง printer ไม่พอ)

จนผมเปลี่ยนเอาเครื่อง Printer มาต่อเข้ากับเครื่องที่จ่ายยาโดยตรงแล้ว Share printer แบบธรรมดา ปรากฏว่าพบปัญหาน้อยลง แต่ก็ยังมีปัญหาเหมือนเดิม.....ครั้งนี้ผมคิดว่าเป็นที่ Session ของ windows XP เพราะ Limit ที่ 10 session เท่าที่ Monitor ดูก็คิดว่าจะเกินจริงๆ พอผมสั่งลบ session บางอันออกก็ Print ได้ปกติ........

ผมลองใช้คำสั่ง ..... net server /autodisconnect:1 เพื่อให้มัน disconnect session ทุกๆ 1 นาที อาจจะพอช่วยได้บ้าง แต่ก็ยังเจอปัญหาประปราย .....

ต้องขออภัยที่ไม่สามารถเซฟรูปมาให้ดูได้เพราะมันจะ  restart windows เลยเซฟไม่ทัน แต่ก่อน restart มันจะขึ้น Popup ของ โปรแกรม HosXP เองว่า "ไม่พบเครื่องพิมพ์"

จึงอยากจะทราบว่ามีที่ไหนพบปัญหาแบบนี้บ้างครับ และแนวทางการแก้ไขทำกันอย่างไรบ้าง เพราะเท่าที่ทราบมาหลายที่จะให้ห้องยา print ใบสั่งยาเองจึงไม่ค่อยมีปัญหา แต่สำหรับที่ผมไม่อาจจะจทำแบบนั้นได้ เพราะห้องยาอ้างว่างานเขาเยอะอยู่แล้ว......

และเรียนถามอาจารย์ว่าเป็นไปได้หรือเปล่าที่จะปรับปรุงตัวโปรแกรมเพื่อแก้ปัญหานี้ครับ

46
สวัสดีครับ ผมชื่อ วิโรจน์ (หนุ่ม) จากโรงพยาบาลศรีประจันต์ จ.สุพรรณบุรี....
ทางโรงพยาบาลกำลังจะใช้งาน HosXP กำหนดการใช้งานประมาณ วันที่ 1 พ.ค. นี้ครับ

ผมเป็น Admin กำลังเซตอัพและทดสอบระบบครับ .....
ผมพบปัญหาและพยายามหาสาเหตุและแก้ไขไปบางส่วนแล้วครับ และพยายามทำความเข้าใจกับ HosXP ต่อไปนี้คือคำถามจากปัญหาที่ผมพบเจอและยังไม่ทราบสาเหตุครับ ปัจจุบันใช้เวอร์ชั่น 3.52.4.2b และพยายามอัพตามจากหน้าเวบเรื่อยๆครับ

1. ฟอร์มเซตอัพ หัตถการผู้ป่วยใน
   1.1 ไม่สามารถบันทึกรหัส ICD9 ได้... คือสามารถเลือกหัตถการ ICD9 จากกรอบการค้นหาได้แต่ พอบันทึกฟอร์มแล้วไม่เกิด event update ที่ SQL debug ครับ แต่ส่วนอื่นๆปกติ
   1.2 ไม่สามารถลบรายการหัตถการผู้ป่วยในได้จากปุ่ม "ลบรายการ" จากปุ่มด้านข้างฟอร์มหรือปุ่ม "ลบรายการ" จากฟอร์ม Edit IPD Operation Item  ... SQL debug ขึ้น event select ทุกครั้งที่ลบ (ผมจึงใช้ลบจาก database โดยตรง)
   เพิ่มเติม.... ถ้าสามารถดับเบิ้ลคลิกที่รายชื่อหัตถการแล้วเป็นการแสดงรายละเอียดได้จะสะดวกมากครับ ตอนนี้คือคลิกที่รายการหัตถการแล้วคลิกปุ่ม "Show Detail"
2. ฟอร์มเซตอัพ หัตถการ ER สามารถลงและบันทึก ICD9 ได้ แต่ไม่สามารถลบได้เหมือน 1.2
3. การเซตอัพเมนูสำหรับผู้ใช้งาน....
   3.1 หลังจากที่เลือกเมนูให้กับกลุ่มผู้ใช้งานแล้วต้องกด Grant ทุกครั้งจึงจะสามารถใช้งานได้... จึงอยากให้รวม event Grant เข้าไปในตอนเซพเลยครับ
   3.2 ปุ่ม Select menu หลังจากกดแล้วจะทำให้โปรแกรมไม่สามารถ Logout หรือ Exit ได้ ผมจึงต้องลบ Process ออกจึงจะปิดโปรแกรมได้
   3.3 หลังจากที่เซตอัพเมนูแล้ว กลุ่มเมนู "'งานส่งเสริมสุขภาพ" จะยังคงแสดงออกมาตลอดทั้งๆที่ไม่ได้ให้มันแสดง

หน้า: [1]