แสดงกระทู้

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 - manoi

หน้า: 1 ... 169 170 [171]
8501
เนื่องจาก joomla และ smf ตอนนี้เชื่อมต่อกันโดยอาศัย Bridge ครับ และตัว Bride ตอนนีมีปัญหาว่าบาง user เวลาลงทะเบียนใหม่จะไม่ปรากฎชื่อใน smf ต้องทำการ synchronize user ซึ่งตอนนี้ผมจะทำวันละ 2 ครั้ง เช้า - เย็น ครับ (ทำการ sync ให้แล้วครับ ลอง Login ใหม่)

8502
สามารถกำหนดอัตราใหม่ไว้ได้เลยครับ โดยกำหนดราคาใหม่ไว้ในช่อง พิเศษ 1 เมื่อถึงเวลาจะเริ่มใช้ ก็เพียงแต่มา Switch ราคาครับ


8503
ผมทดสอบแล้วยังใช้งานได้ครับ ไม่ต้องปรับอะไร

8504
ทำการแก้ไขให้แล้วครับ
2.49.8.16 (เป็นเฉพาะ Microsoft SQL)

8505
ตรวจสอบดังนี้ครับ
1. ผู้ป่วยรายนี้ใช้สิทธิอะไร
2. สิทธิที่ผู้ป่วยใช้กำหนดให้ประเภทการชำระเงินเป็นแบบไหน
3. รายการที่สั่งจ่ายหรือเกิดขึ้นถูกกำหนดให้มีชนิดการชำระเิงินแบบไหน (หรือถูกกำหนดให้ต้องชำระเงินเองหรือไม่)

8506
ส่งหน้าจอเข้ามาด้วยครับ

8507
จริงๆแล้วการย้ายข้อมูลจาก Windows -> Linux ที่ดีที่สุดควรจะใช้ผ่านระบบ Backup/Restore ครับ

แต่หากใช้ Import/Export Data Tools ทำการย้ายข้อมูลไปแล้ว ให้ใช้ระบบ Check DB ทำการตรวจสอบ Structure (Upgrade Structure) และทำการ Check Table Index ด้วยครับ (เนื่องจากตัว Export Data จะสร้างเฉพาะ Table / Primary key แต่จะไม่สร้าง Index ให้)

8508
กำลังหาที่ Upload ให้ครับ (ตอนนี้ Internet ที่ผมใช้ความเร็วต่ำครับ)

8509
เข้าใจครับ กำลังรอหา Smart Card Reader มาทดสอบครับ

8510
Quick Reply ตั้งค่าได้ในข้อมูลส่วนตัวครับ

8511
ตัวเลือกอยู่ที่ tab พิมพ์ครับ

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

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

ที่บ้านหลังใหม่นี้ Unlimit space/Bandwidth  ทำให้ผมสามารถนำ content ต่างๆ ใส่ไว้ให้สมาชิก download ไปใช้งานได้อย่างสะดวก เช่น HOSxP-CD , CAI, Admin Training Video,... etc

8513
การเขียน SQL Script / What 's next
« เมื่อ: สิงหาคม 16, 2006, 18:48:03 PM »
จากความสามารถของตัว Script นี้ทำให้เราสามารถเพิ่มความยืดหยุ่นในการใช้งานระบบ HOSxP ได้ โดยการ Integrate Script เข้าไปในบางส่วนของระบบงานเพื่อให้ผู้ดูแลสามารถเพิ่มเติมการทำงานหรือเก็บข้อมูลบางอย่างเพิ่มเติมได้โดยไม่ต้องแก้ไขระบบหลัก ยกตัวอย่างเช่น

ระบบที่ได้นำร่องการ integrate ไปแล้วคือระบบการเชื่อมต่อกับ LIS ทั้งการส่ง Request Lab และการอ่านผล Lab จาก LIS

ระบบที่จะทำการ Integrate Script เข้าต่อจากนี้คือ ระบบการสั่ง X-Ray ที่จะสามารถออกแบบหน้าจอสั่ง X-Ray ได้เอง (ด้วยการดัดแปลง Script)

8514
การเขียน SQL Script / Re: Pascal Script for Fun Part I
« เมื่อ: สิงหาคม 16, 2006, 04:38:42 AM »
คราวนี้มาดูเมื่อเขียนให้ทำการดึงข้อมูลมาใช้บ้าง


โปรแกรม (script) Pttype name changer จะทำการดึงข้อมูลในตาราง pttype มาให้ผู้ใช้แก้ไขชื่อ โดยการระบุรหัสิทธิการรักษาที่ต้องการ

โค๊ด: Pascal
  1. Unit Script;
  2.  
  3. var MyForm : TForm;
  4.     OKButton : TButton;
  5.     SaveButton : TButton;
  6.     DBEdit1:TDBEdit;
  7.     DataSource : TDataSource;
  8.     ClientDataset : TClientDataset;
  9.     PttypeEdit : TEdit;
  10.  
  11.     PttypeLabel : TLabel;
  12.     PttypeNameLabel : TLabel;
  13.  
  14.  
  15. Implementation
  16.  
  17.  
  18. Procedure OKButtonClick;
  19. begin
  20.   MyForm.close;
  21.  
  22. end;
  23.  
  24. Procedure SaveButtonClick;
  25. begin
  26.   if ClientDataset.state = dsedit then ClientDataset.post;
  27.  
  28.   if ClientDataset.changecount>0 then HOSxP_UpdateDelta(clientdataset.delta,'select * from pttype where pttype="'+PttypeEdit.text+'"');
  29.   MyForm.close;
  30. end;
  31.  
  32. Procedure PttypeEditChange;
  33. begin
  34.   ClientDataset.Data:=HOSxP_GetDataset('select * from pttype where pttype="'+PttypeEdit.text+'"');
  35.   SaveButton.enabled:=ClientDataset.recordcount>0;
  36.  
  37. end;
  38.  
  39. Procedure InitilizeForm;
  40. begin
  41.  
  42.   MyFORM:=TForm.create(nil);
  43.   MyForm.top:=100;
  44.   MyForm.left:=100;
  45.  
  46.   OKButton:=TButton.Create(MyForm);
  47.   OKButton.parent:=MyForm;
  48.   OKButton.Caption:='Close';
  49.   OKButton.left:=150;
  50.   OKButton.top:=150;
  51.  
  52.   OKButton.OnClick:=OkButtonClick;
  53.  
  54.   SaveButton:=TButton.Create(MyForm);
  55.   SaveButton.parent:=MyForm;
  56.   SaveButton.Caption:='Save';
  57.   SaveButton.left:=50;
  58.   SaveButton.top:=150;
  59.   SaveButton.enabled:=false;
  60.  
  61.   SaveButton.OnClick:=SaveButtonClick;
  62.  
  63.   DataSource:=TDataSource.create(MyForm);
  64.   ClientDataset:=TClientDataset.create(MyForm);
  65.   ClientDataset.data:=HOSxP_GetDataset('select * from pttype limit 0');
  66.   DataSource.Dataset := ClientDataset;
  67.  
  68.   PttypeEdit:=TEdit.create(MyForm);
  69.   PttypeEdit.parent:=MyForm;
  70.   PttypeEdit.left:=100;
  71.   PttypeEdit.top:=20;
  72.   PttypeEdit.width:=40;
  73.  
  74.   PttypeEdit.onchange:=PttypeEditChange;
  75.  
  76.   PttypeLabel:=TLabel.create(MyForm);
  77.   PttypeLabel.parent:=MyForm;
  78.   PttypeLabel.caption:='ÃËÑÊÊÔ·¸Ô';
  79.   PttypeLabel.left:=20;
  80.   PttypeLabel.top:=23;
  81.  
  82.  
  83.   PttypeNameLabel:=TLabel.create(MyForm);
  84.   PttypeNameLabel.parent:=MyForm;
  85.   PttypeNameLabel.caption:='ª×èÍÊÔ·¸Ô';
  86.   PttypeNameLabel.left:=20;
  87.   PttypeNameLabel.top:=53;
  88.  
  89.   DBEdit1:=TDBEdit.create(MyForm);
  90.   DBEdit1.parent:=MyForm;
  91.   DBEdit1.left:=100;
  92.   DBEdit1.top:=50;
  93.   DBEdit1.DataSource:=Datasource;
  94.   DBEdit1.DataField:='name';
  95.  
  96.  
  97.  
  98. end;
  99.  
  100.  
  101. Procedure Main;
  102. var
  103.   i:integer;
  104. begin
  105.  
  106.  
  107.   InitilizeForm;
  108.   MyForm.showmodal;
  109.   MyForm.free;
  110.  
  111. end;
  112.  
  113.  
  114.  
  115.  
  116.  
  117. end.
  118.  
  119.  
  120.  
  121.  

8515
การเขียน SQL Script / Pascal Script for Fun Part I
« เมื่อ: สิงหาคม 16, 2006, 01:33:26 AM »
ในการเขียน Script นอกจากจะเขียนเป็น Script ให้ทำงานตามที่สั่งได้แล้ว ยังสามารถออกแบบให้สามารถติดต่อกับผู้ใช้งานโดยใช้ Standard VCL Component ได้ด้วย แต่เนื่องจากระบบ Script ไม่มีระบบ IDE ที่จะออกแบบหน้าจอ ดังนั้นจึงต้องใช้วิธีนำ component มาใช้โดยการเขียน Code มาดูตัวอย่างครับ

โค๊ด: Pascal
  1. Unit Script;
  2.  
  3. var MyForm : TForm;
  4.     OKButton : TButton;
  5.  
  6.  
  7. Implementation
  8.  
  9.  
  10. Procedure OKButtonClick;
  11. begin
  12.   MyForm.close;
  13.  
  14. end;
  15.  
  16. Procedure InitilizeForm;
  17. begin
  18.  
  19.   MyFORM:=TForm.create(nil);
  20.   MyForm.top:=100;
  21.   MyForm.left:=100;
  22.  
  23.   OKButton:=TButton.Create(MyForm);
  24.   OKButton.parent:=MyForm;
  25.   OKButton.Caption:='OK';
  26.   OKButton.left:=10;
  27.   OKButton.top:=10;
  28.  
  29.   OKButton.OnClick:=OkButtonClick;
  30.  
  31. end;
  32.  
  33.  
  34. Procedure Main;
  35. var
  36.   i:integer;
  37. begin
  38.   InitilizeForm;
  39.   MyForm.showmodal;
  40.   MyForm.free;
  41. end;
  42.  
  43.  
  44.  
  45.  
  46.  
  47. end.
  48.  
  49.  
  50.  

8517
ยกเลิกการตรวจสอบ balance ได้ที่ system setting ครับ

8518
ลบออกให้แล้วครับ

เวปเดิมมีปัญหาเรื่อง security และ spam ครับ

8519
ใช้งานส่วนใหนไม่ได้ครับ (ผมก็เป็น joomla มือใหม่เหมือนกันครับ)

8520
หากใช้ 2.49.8.12 แล้ว ให้เอา comment ตรงบรรทัดที่เขียนว่า resyncan ออกครับ

จาก
// resyncan
ให้เป็น
resyncan

แล้วลอง run ใหม่ check ตรง resyncan เอาไว้ด้วยครับ

หรือเอาตัวใหม่ไป run ก็ได้ครับ

โค๊ด: [Select]
Unit IPDIncomeBalanceCheck;
var Result_Text : Tstringlist;
   fm:tform;
   ListBox:TListBox;
   DoButton:TButton;
   CloseButton:TButton;
   Panel:TPanel;
   Label1,Label2:TLabel;
   DateEdit1,DateEdit2:TEdit;
   ClearIncithSummaryCheckBox:TCheckBox;
   ResyncANCheckBox:TCheckBox;
implementation



Procedure DoButtonClick;
var fcds:TClientDataset;
     rcds:TClientDataset;
     ocds:TClientDataSet;
begin
  Result_Text := TStringList.Create;

  ListBox.Items.clear;

  fcds:=TClientDataset.create(nil);
  rcds:=TClientDataset.create(nil);
  ocds:=TClientDataset.create(nil);
  fcds.data:=HOSxP_Getdataset('select a.an,o.vstdate, o.an,a.an,a.pttype,a.item_money,a.income ,sum(o.sum_price) as sum_price '+
   ' from an_stat a '+
    ' left outer join opitemrece o on o.an=a.an  '+
    ' where a.regdate between "'+dateedit1.text+'" and "'+dateedit2.text+'" and a.item_money <> a.income'+
    ' group by o.an order by a.an ');


  ListBox.Items.Add('Runing check date '+dateedit1.text+' - '+dateedit2.text);
  ListBox.items.Add('Record unbalance = '+inttostr(fcds.recordcount));

  if ClearIncithSummaryCheckBox.checked then
  begin
    ListBox.items.Add('Clear incoth_summary');
    fcds.first;
    while not fcds.eof do
    begin
    ocds.data:=HOSxp_Getdataset('select * from incith_summary where an="'+fcds.fieldbyname('an').asstring+'"');
    ocds.first;
    while not ocds.eof do ocds.delete;
    if ocds.changecount>0 then
    HOSxP_updatedelta(ocds.delta,'select * from incith_summary where an="'+fcds.fieldbyname('an').asstring+'"');
    fcds.next;
    end;
  end;

  if ResyncAnCheckBox.checked then
  begin
   ListBox.items.Add('Resync AN...');
   fcds.first;
   while not fcds.eof do
   begin
     ListBox.items.Add('Resync AN '+fcds.fieldbyname('an').asstring);
     resyncan(fcds.fieldbyname('an').asstring);
     fcds.next;
   end;

   fcds.data:=HOSxP_Getdataset('select a.an,o.vstdate, o.an,a.an,a.pttype,a.item_money,a.income ,sum(o.sum_price) as sum_price '+
   ' from an_stat a '+
    ' left outer join opitemrece o on o.an=a.an  '+
    ' where a.regdate between "'+dateedit1.text+'" and "'+dateedit2.text+'" and a.item_money <> a.income'+
    ' group by o.an order by a.an ');
  end;

  fcds.first;
  if fcds.recordcount=0 then ListBox.Items.add('No error found.');
  while not fcds.eof do
  begin
    ListBox.items.add('');
    ListBox.Items.Add('Investigating.... '+fcds.fieldbyname('an').asstring+' Income = '+fcds.fieldbyname('income').asstring+
      '  Item sum price = '+fcds.fieldbyname('sum_price').asstring);

    rcds.data:=HOSxP_GetDataset('select i.pttype,p.pcode,p.paidst from ipt i left outer join pttype p on p.pttype = i.pttype where i.an = "'+fcds.fieldbyname('an').asstring+'"');
    listBox.items.add('pttype = '+rcds.fieldbyname('pttype').asstring+' pcode = '+
      rcds.fieldbyname('pcode').asstring+' paidst = '+
      rcds.fieldbyname('paidst').asstring);

    rcds.data:=HOSxP_Getdataset('select r2.income as income,r2.paidst as paidst, sum(r2.rcptamt) as sp from rcpt_print r1,rcpt_print_detail r2 where r1.vn="'+fcds.fieldbyname('an').asstring+'" and r1.finance_number=r2.finance_number and r2.paidst in ("02") group by r2.income,r2.paidst');
    if rcds.recordcount=0 then ListBox.Items.add('>>No rcpt_detail adjustment') else
      ListBox.Items.add('>>Found rcpt_detail adjustment');
    rcds.data:=HOSxP_GetDataset('select r2.income as income,r2.paidst as paidst, sum(r2.rcptamt) as sp from rcpt_print r1,rcpt_print_detail r2 where r1.vn="'+fcds.fieldbyname('an').asstring+'" and r1.finance_number=r2.finance_number and r2.paidst in ("01","03") group by r2.income,r2.paidst');
    if rcds.recordcount=0 then ListBox.Items.Add('>>No rcpt_print') else
      ListBox.Items.Add('>>Found rcpt_print');
    rcds.data:=HOSxP_GetDataset('select income,paidst,sum(sum_price) as sp from opitemrece where an="'+fcds.fieldbyname('an').asstring+'" and paidst in ("01","03") group by income,paidst');
    if rcds.recordcount=0 then ListBox.Items.Add('>>No opitemrece data (paidst 01,03)') else
    begin
      ListBox.Items.Add('>>Found opitemrece data (paidst 01,03)');
      rcds.data:=HOSxP_GetDataset('select sum(sum_price) as sp from opitemrece where an="'+fcds.fieldbyname('an').asstring+'" and paidst in ("01","03") ');
      ocds.data:=HOSxP_GetDataset('select sum(rcptamt) as sp from incith where an="'+fcds.fieldbyname('an').asstring+'" and paidst in ("01","03") ');
      if rcds.fieldbyname('sp').asfloat=ocds.fieldbyname('sp').asfloat then
        ListBox.items.Add('>>> opitemrece data (paidst 01,03) = incith [normal]') else
        ListBox.items.Add('>>> opitemrece data (paidst 01,03) <> incith');
    end;

    rcds.data:=HOSxP_GetDataset('select r2.income as income,r2.paidst as paidst,sum(r2.rcptamt) as sp from rcpt_print r1,rcpt_print_detail r2 where r1.vn="'+fcds.fieldbyname('an').asstring+'" and r1.finance_number=r2.finance_number and r2.paidst = "04" group by r2.income,r2.paidst');

    if rcds.recordcount=0 then ListBox.Items.Add('>>No discount data') else
      ListBox.Items.Add('>>Found discount data');

    rcds.data:=HOSxP_GetDataset('select r2.income,sum(r2.amount) as sp from rcpt_arrear r1,rcpt_arrear_detail r2 where r1.vn="'+fcds.fieldbyname('an').asstring+'" and r1.arrear_id = r2.arrear_id and r1.paid<>"Y" group by r2.income');
    if rcds.recordcount=0 then ListBox.Items.Add('>>No arrear data') else
      ListBox.Items.Add('>>Found arrear data');

    rcds.data:=HOSxP_GetDataset('select * from incith_summary where an="'+fcds.fieldbyname('an').asstring+'" ');
    if rcds.recordcount=0 then ListBox.Items.Add('>>No manual summary data') else
    begin
      ListBox.Items.Add('>>Found manual summary data');
      ocds.data:=HOSxP_GetDataset('select sum(rcptamt) as cc from incith_summary where an="'+fcds.fieldbyname('an').asstring+'" ');
      ListBox.Items.Add('>>>manual summary amount = '+ocds.fieldbyname('cc').asstring);

    end;

    fcds.next;
  end;

  fcds.free;
  rcds.free;
  ocds.free;

  Result_Text.free;



end;

Procedure CloseButtonClick;
begin
  fm.close;
end;



Procedure Main;
var
  i:integer;


begin


  fm:=TForm.create(nil);
  fm.caption:='HOSxP IPD Income balance check version 0.1';
  fm.width:=700;
  fm.height:=500;
  fm.top:=100;
  fm.left:=100;


  Panel:=TPanel.create(fm);
  Panel.parent:=fm;
  Panel.caption:='';
  Panel.align:=altop;

  listbox:=tlistbox.create(fm);
  listbox.parent:=fm;
  listbox.align:=alclient;
  listbox.font.name:='Courier';
  listbox.font.size:=10;


  DoButton:=TButton.create(fm);
  DoButton.parent:=Panel;
  Dobutton.top:=5;
  DoButton.left:=10;
  DoButton.width:=120;
  DoButton.caption:='Run Check';
  DoButton.onclick:=DoButtonClick;

  CloseButton:=TButton.create(fm);
  CloseButton.parent:=Panel;
  CloseButton.left:=620;
  closebutton.width:=50;
  CloseButton.top:=5;
  CloseButton.caption:='Close';
  CloseButton.onclick:=CloseButtonClick;

  Label1:=TLabel.create(fm);
  Label1.parent:=panel;
  Label1.caption:='Begin Date';
  label1.left:=140;
  Label1.top:=9;

  DateEdit1:=TEdit.create(fm);
  DateEdit1.parent:=panel;
  DateEdit1.left:=200;
  DateEdit1.top:=5;
  DateEdit1.Text:='2005-06-01';
  DateEdit1.width:=70;

  Label2:=TLabel.create(fm);
  Label2.parent:=panel;
  Label2.caption:='End Date';
  label2.left:=280;
  Label2.top:=9;

  DateEdit2:=TEdit.create(fm);
  DateEdit2.parent:=panel;
  DateEdit2.left:=330;
  DateEdit2.top:=5;
  DateEdit2.Text:='2005-06-01';
  DateEdit2.width:=70;

  ResyncANCheckBox:=TCheckBox.create(fm);
  ResyncANCheckBox.parent:=panel;
  ResyncANCheckBox.left:=420;
  ResyncANCheckBox.top:=5;
  ResyncAnCheckBox.caption:='Resync AN';

  ClearIncithSummaryCheckBox:=TCheckBox.create(fm);
  ClearIncithSummaryCheckBox.parent:=panel;
  ClearIncithSummaryCheckBox.left:=500;
  ClearIncithSummaryCheckBox.top:=5;
  ClearIncithSummaryCheckBox.width:=120;

  ClearIncithSummaryCheckBox.caption:='Clear incith_summary';

  fm.showmodal;
  fm.free;



end;





end.




8521
ยินดีต้อนรับ / Re: ย้ายเวบไซต์
« เมื่อ: สิงหาคม 15, 2006, 05:23:24 AM »
กำลังหาวิธีแก้อยู่ครับ ยังแก้ไม่ได้เลย  :-[

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


หน้า: 1 ... 169 170 [171]