กระทู้เมื่อเร็วๆ นี้

หน้า: 1 2 3 [4] 5 6 ... 10
31
ยินดีต้อนรับ / Re: Q&A คำถามที่พบบ่อยและวิธีแก้ไขปัญหา
« กระทู้ล่าสุด โดย Call Center เมื่อ พฤศจิกายน 14, 2024, 10:57:02 AM »
     Q : ส่งออก FDH แล้วติดรหัส 515 : ไม่ระบุวัตถุประสงค์ในการรับ-ส่งต่อ ต้องบันทึกข้อมูลอย่างไร กรณีผู้ป่วยใน
     A : แนะนำให้บันทึกที่แถบการรับ Admit > ช่องประเภท เลือกอุบัติเหตุ/Refer > บันทึกข้อมูลแท็บอุบัติเหตุ ระบุข้อมูลช่องกรณี และข้อบ่งชี้กรณีฉุกเฉิน
 

[ Guests cannot view attachments ]

[ Guests cannot view attachments ]

     รายละเอียดเพิ่มเติม >> https://drive.google.com/file/d/1Anuw0RAqnirofb1ChtMk7HJFeBXsFShI/view?usp=sharing
32
ยินดีต้อนรับ / Re: Q&A คำถามที่พบบ่อยและวิธีแก้ไขปัญหา
« กระทู้ล่าสุด โดย Call Center เมื่อ พฤศจิกายน 14, 2024, 10:48:06 AM »
     Q : กรณีที่พยาบาลออกใบรับรองแพทย์แทนแพทย์ แล้วขึ้นให้ใส่ OTP

[ Guests cannot view attachments ]

     A : แนะนำว่าหากต้องการให้พยาบาลออกใบรับรองแพทย์แทนแพทย์ โดยไม่ต้องให้ยืนยัน OTP ทุกครั้ง สามารถให้แพทย์ตั้งค่าที่ Application > User Preference > แท็บข้อมูลบุคลากร > แท็บรายชื่อเจ้าหน้าที่นัดแทน เพื่อเพิ่มชื่อพยาบาลเอาไว้ ให้สามารถออกใบรับรองแพทย์โดยไม่ต้องยืนยัน OTP

[ Guests cannot view attachments ]

      รายละเอียดเพิ่มเติม >> https://drive.google.com/file/d/1wtC-2YP5YNaR-YXxDisfOZHUOZZpic9i/view?usp=sharing
33
GUI (DFM) ของ script เราสามารถใช้ IDE ของ delphi ช่วยเรื่องความสวยงามได้ครับ มีหลาย component ที่ใช้ได้เช่น table, list, group box, tab, label ฯลฯ แต่ก็ไม่ได้ทั้งหมด .... เราสร้างด้วย IDE แล้ว copy มาใส่ลงใน DFM ของ script ได้
34
ยินดีต้อนรับ / Q&A คำถามที่พบบ่อยและวิธีแก้ไขปัญหา
« กระทู้ล่าสุด โดย Call Center เมื่อ พฤศจิกายน 14, 2024, 10:44:21 AM »
วันนี้ BMS จะมาตอบคำถามที่ทาง รพ. มักถามเข้ามาบ่อยๆ และบอกวิธีแก้ไขปัญหา  ;)

     Q : โปรแกรม BMS-HOSxP V.3 หน้า Patient EMR แสดงข้อมูลชื่อรายการยาเป็นข้อความ “(MEMO)”

[ Guests cannot view attachments ]

     A : แนะนำให้ตั้งค่าหน้าการเชื่อมต่อ โดยการติ๊ก ใช้ zeosdbo ก่อน Login เข้าใช้งานโปรแกรมตามปกติ

[ Guests cannot view attachments ]

     รายละเอียดเพิ่มเติม >> https://drive.google.com/file/d/1u9e88Nyz1i1Z-0xxLnVpQ-stqebsZMQ8/view?usp=sharing

ㅤㅤ
35
DFM

โค๊ด: [Select]
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Drug prescription blocker)'
  ClientHeight =550
  ClientWidth = 700
  Color = clWindow
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnShow = showdata
  PixelsPerInch = 96
  TextHeight = 13
  Position = poScreenCenter

  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 700
    Height = 50
    Align = alTop
    TabOrder = 1
    BevelInner = bvNone
    BevelOuter = bvNone
    object Shape1: TShape
      Left = 0
      Top = 0
      Width = 700
      Height = 50
      Brush.Color = $4763FF
      Pen.Style = psClear
    end
    object HeadLabel: TLabel
      Left = 270
      Top = 15
      Width = 100
      Height = 25
      Caption = 'ALERT:METFORMIN'
      Alignment = taCenter
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWhite
      Font.Height = -20
      Font.Name = 'Tahoma'
      Font.Style = [fsBold]
      ParentFont = False
    end
  end

  object Panel2: TPanel
    Left = 0
    Top = 50
    Width = 700
    Height = 50
    Align = alTop
     BevelInner = bvNone
    BevelOuter = bvNone
    TabOrder = 1

    object hnLabel: TLabel
      Left = 25
      Top = 5
      Width = 16
      Height = 16
      Caption = 'HN'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
    end
      object hntxt: TLabel
      Left = 55
      Top = 5
      Width = 14
      Height = 16
      Caption = 'hn'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
    end
      object Label2: TLabel
      Left = 168
      Top = 5
      Width = 70
      Height = 16
      Caption = 'ª×èÍ-Ê¡ØÅ'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
    end
      object fullnametxt: TLabel
    Left = 230
    Top = 5
    Width = 49
    Height = 16
    Caption = 'Fullname'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end

  object Label3: TLabel
    Left = 400
    Top = 5
    Width = 35
    Height = 16
    Caption = 'ÍÒÂØ'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end
  object Year: TLabel
    Left = 450
    Top = 5
    Width = 22
    Height = 16
    Caption = '»Õ'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end

  object age_yLabel: TLabel
    Left = 430
    Top = 5
    Width = 22
    Height = 16
    Caption = 'Years'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end
  object Label13: TLabel
    Left = 500
    Top = 5
    Width = 100
    Height = 16
    Caption = 'ÊÔ·¸Ô¡ÒÃÃÑ¡ÉÒ'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end

  object pttypetxt: TLabel
    Left = 580
    Top = 5
    Width = 50
    Height = 16
    Caption = 'Pttype'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end
    object Label4: TLabel
    Left = 25
    Top = 25
    Width = 54
    Height = 16
    Caption = 'Diagnosis'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end

  object pdxLabel: TLabel
    Left = 100
    Top = 25
    Width = 20
    Height = 16
    Caption = 'pdx'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end
    object Label9: TLabel
    Left = 400
    Top = 25
    Width = 108
    Height = 16
    Caption = ''
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    ParentFont = False
  end

  end

  object Panel3: TPanel
    Left = 0
    Top = 50
    Width = 300
    Height = 135
    Align = alTop
    TabOrder = 1
    BevelInner = bvNone
    BevelOuter = bvNone
    object label11: TLabel
      Left = 25
      Top = 0
      Width = 100
      Height = 16
      Caption = '¤èÒ·Ò§Ëéͧ»¯ÔºÑµÔ¡ÒÃ'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
      end
    object cxGrid2: TcxGrid
          Left = 25
          Top = 25
          Width = 655
          Height = 130
          TabOrder = 6
          LookAndFeel.Kind = lfOffice11

          object cxGrid2DBTableView1: TcxGridDBTableView
            DataController.DataSource = ds
            NavigatorButtons.ConfirmDelete = False
            DataController.Summary.DefaultGroupSummaryItems = <>
            DataController.Summary.FooterSummaryItems = <>
            DataController.Summary.SummaryGroups = <>
            OptionsData.CancelOnExit = False
            OptionsData.Deleting = False
            OptionsData.DeletingConfirmation = False
            OptionsData.Editing = False
            OptionsData.Inserting = False
            OptionsSelection.CellSelect = False
            OptionsView.CellAutoHeight = True
            OptionsView.ColumnAutoWidth = True
            OptionsView.GroupByBox = False
            OptionsView.Indicator = True
            object cxGrid2DBTableView1report_date: TcxGridDBColumn
              Caption = 'Çѹ·ÕèÃÒ§ҹ'
              DataBinding.FieldName = 'report_date'
              Width = 70
            end
            object cxGrid2DBTableView1creatinine: TcxGridDBColumn
              Caption = 'Creatinine'
              DataBinding.FieldName = 'creatinine'
              Width = 70
            end
            object cxGrid2DBTableView1eGFR: TcxGridDBColumn
              Caption = 'eGFR'
              DataBinding.FieldName = 'eGFR'
              Width = 70
            end
            object cxGrid2DBTableView1CrCl: TcxGridDBColumn
              Caption = 'CrCl'
              DataBinding.FieldName = 'crcl'
              Width = 70
            end
          end
          object cxGrid2Level1: TcxGridLevel
            GridView = cxGrid2DBTableView1
          end
  end

  end
  object Panel4: TPanel
    Left = 0
    Top = 50
    Width = 300
    Height = 100
    Align = alTop
    TabOrder = 1
    BevelInner = bvNone
    BevelOuter = bvNone
    object label12: TLabel
      Left = 25
      Top = 5
      Width = 100
      Height = 16
      Caption = 'ÂÒ·ÕèÊÑè§ãªé»Ñ¨¨ØºÑ¹'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
      end
    object cxGrid3: TcxGrid
          Left = 25
          Top = 25
          Width = 655
          Height = 75
          TabOrder = 6
          LookAndFeel.Kind = lfOffice11

          object cxGrid3DBTableView1: TcxGridDBTableView
            DataController.DataSource = ds2
            NavigatorButtons.ConfirmDelete = False
            DataController.Summary.DefaultGroupSummaryItems = <>
            DataController.Summary.FooterSummaryItems = <>
            DataController.Summary.SummaryGroups = <>
            OptionsData.CancelOnExit = False
            OptionsData.Deleting = False
            OptionsData.DeletingConfirmation = False
            OptionsData.Editing = False
            OptionsData.Inserting = False
            OptionsSelection.CellSelect = False
            OptionsView.CellAutoHeight = True
            OptionsView.ColumnAutoWidth = True
            OptionsView.GroupByBox = False
            OptionsView.Indicator = True
            object cxGrid3DBTableView1report_date: TcxGridDBColumn
              Caption = 'Çѹ·ÕèÊÑè§ãªé'
              DataBinding.FieldName = 'vstdate'
              Width = 70
            end
            object cxGrid3DBTableView1creatinine: TcxGridDBColumn
              Caption = 'ª×èÍÂÒ'
              DataBinding.FieldName = 'name'
              Width = 70
            end
            object cxGrid3DBTableView1eGFR: TcxGridDBColumn
              Caption = 'ÇÔ¸Õãªé'
              DataBinding.FieldName = 'usage_or_sp_usage'
              Width = 70
            end
            object cxGrid3DBTableView1CrCl: TcxGridDBColumn
              Caption = '¨Ó¹Ç¹'
              DataBinding.FieldName = 'qty'
              Width = 70
            end
          end
          object cxGrid3Level1: TcxGridLevel
            GridView = cxGrid3DBTableView1
          end
  end

  end

  object Panel10: TPanel
    Left = 0
    Top = 50
    Width = 300
    Height = 250
    Align = alTop
    TabOrder = 1
    BevelInner = bvNone
    BevelOuter = bvNone
      object Checkfordelete: TcxCheckBox
          Left = 150
          Top = 5
          Caption = ' ËéÒÁÊÑè§ãªé eGFR < 30 (àÅ×Í¡à¾×èÍźÃÒ¡ÒÃÂÒ)'
          TabOrder = 1
          Transparent = True
          Width = 400


      end
      object Checkhalfx1: TcxCheckBox
          Left = 150
          Top = 25
          Caption = ' .51pt  ( 1/2 àÁç´ x1 PC) '
          TabOrder = 2
          Transparent = True
          Width = 400
          Visible = False


      end
        object Check1x1: TcxCheckBox
          Left = 150
          Top = 45
          Caption = ' 11pt (1 àÁç´ x 1 PC àªéÒ)'
          TabOrder = 3
          Transparent = True
          Width = 400
          Visible = False


      end
        object Check1x2: TcxCheckBox
          Left = 150
          Top = 65
          Caption = ' 12pt (1 àÁç´ x 2 PC àªéÒ-àÂç¹)'
          TabOrder = 4
          Transparent = True
          Width = 400
          Visible = False

      end
        object Check2x1: TcxCheckBox
          Left = 150
          Top = 85
          Caption = ' 21pt (2 àÁç´ x 1 PC)'
          TabOrder = 5
          Transparent = True
          Width = 400
          Visible = False

      end
        object Check110: TcxCheckBox
          Left = 150
          Top = 105
          Caption = ' 12pt ª· (1 àÁç´ x 2 PC àªéÒ-à·Õè§)'
          TabOrder = 6
          Transparent = True
          Width = 400
          Visible = False

      end
      object Checkforconfirm: TcxCheckBox
          Left = 150
          Top = 125
          Caption = ' Â×¹Âѹ¡ÒÃÊÑè§ãªé'
          TabOrder = 7
          Transparent = True
          Width = 400

      end


      object reclabel: TLabel
      Left = 25
      Top = 5
      Width = 100
      Height = 16
      Caption = '¢¹Ò´ÂÒ'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
      end

         object btnConfirm: TButton
    Left = 550
    Top =  120
    Width = 100
    Height = 30
    Caption = 'ºÑ¹·Ö¡'
    TabOrder = 50
    OnClick = btnConfirmClick
    end

  end



  object Panel6: TPanel
    Left = 0
    Top = 200
    Width = 300
    Height = 300
    Align = alTop
    TabOrder = 1
    BevelInner = bvNone
    BevelOuter = bvNone

    object reclabel4: TLabel
      Left = 25
      Top = 5
      Width = 100
      Height = 16
      Caption = ''
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Tahoma'
      Font.Style = []
      ParentFont = False
      end
    object btnDelete: TButton
    Left = 550
    Top = 50
    Width = 100
    Height = 30
    Caption = 'źÃÒ¡ÒÃÂÒ'
    TabOrder = 3
    OnClick = btnDeleteClick
    end


  end


object cds: TClientDataSet
  Aggregates = <>
  Params = <>
  Left = 39
  Top = 6
end
object ds: TDataSource
  DataSet = cds
  Left = 78
  Top = 6
end
object cds3: TClientDataSet
  Aggregates = <>
  Params = <>
  Left = 39
  Top = 6
end
object ds3: TDataSource
  DataSet = cds3
  Left = 78
  Top = 6
end
object cds2: TClientDataSet
  Aggregates = <>
  Params = <>
  Left = 39
  Top = 6
end
object ds2: TDataSource
  DataSet = cds2
  Left = 78
  Top = 6
end
object TempCDS: TClientDataSet
  Aggregates = <>
  Params = <>
  Left = 39
  Top = 6
end



end
36
Drugblocker

โค๊ด: [Select]
unit DB;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ActnList, DBCtrls, dblookup, DB, DBClient, Grids,
  DBGrids, SQLDB;


  type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    HeadLabel: TLabel;
    hnLabel: TLabel;
    hntxt: TLabel;
    pdxLabel: TLabel;
    Label1: TLabel;
    Shape1: TShape;
    Label8: TLabel;
    Label9: TLabel;
    fullnametxt: TLabel;
    Label13: TLabel;
    pttypetxt: TLabel;
    Panel1: TPanel;
    currentlabel: TLabel;
    Panel3: TPanel;
    Year: TLabel;
    age_yLabel: TLabel;
    ListBox2: TListBox;
    Shape2: TShape;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    DBGrid3: TDBGrid;
    cds: TClientDataSet;
    ds: TDataSource;
    cds2: TClientDataSet;
    ds2: TDataSource;
    cds3: TClientDataSet;
    ds3: TDataSource;
    TempCDS: TClientDataSet;
    reclabel1: TLabel;
    reclabel2: TLabel;
    reclabel3: TLabel;
    reclabel4: TLabel;
    procedure showdata(Sender: TObject);
    procedure LoadPatientData(vn: string);
    function GetVN: string;
    procedure FormCreate(Sender: TObject);
    procedure btnConfirmClick(Sender: TObject);
  private
    procedure DisplayPatientInfo(hn, fullname, pttype: string; age_y: Integer);
    procedure LoadLabData(hn: string);
    procedure LoadPrescriptionData(vn: string);
    procedure DeleteRecord(const RecordID: string);

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// GetVN retrieves the VN (visit number) or uses a default if none is found.
function TForm1.GetVN: string;
begin
  Result :=   GetGlobalValue('VN');// Uncomment if GetGlobalValue is available
end;

// Display patient information on the form.
procedure TForm1.DisplayPatientInfo(hn, fullname, pttype: string; age_y: Integer);
begin
  hntxt.Caption := hn;
  fullnametxt.Caption := fullname;
  pttypetxt.Caption := pttype;
  age_yLabel.Caption := IntToStr(age_y);
end;

// LoadPatientData retrieves and displays patient information based on the VN.
procedure TForm1.LoadPatientData(vn: string);
var
  hn, fullname, pttype, age_y_str: string;
  age_y, sex: Integer;
begin
  try
    hn := getsqldata('SELECT hn FROM vn_stat WHERE vn = "' + vn + '"');
    fullname := getsqldata('SELECT CONCAT(pname, fname, " ", lname) FROM patient WHERE hn = "' + hn + '"');
    sex := StrToInt(getsqldata('SELECT sex FROM patient WHERE hn = "' + hn + '"'));
    pttype := getsqldata('SELECT p.name FROM opitemrece o INNER JOIN pttype p ON o.pttype = p.pttype WHERE vn = "' + vn + '"');
    age_y_str := getsqldata('SELECT age_y FROM vn_stat WHERE vn = "' + vn + '"');
    age_y := StrToInt(age_y_str);
    pdxLabel.Caption := getsqldata('SELECT CONCAT(vs.pdx, " : ", i.name) FROM vn_stat vs INNER JOIN icd101 i ON vs.pdx = i.code WHERE vn = "' + vn + '"');

    DisplayPatientInfo(hn, fullname, pttype, age_y);
  except
    on E: Exception do
      ShowMessage('Error loading patient data: ' + E.Message);
  end;
end;

// Load lab data into cds.
procedure TForm1.LoadLabData(hn: string);
begin
  cds.Data := hosxp_getdataset(
    'SELECT DATE_FORMAT(DATE_ADD(lh.report_date, INTERVAL 543 YEAR), ''%d/%m/%Y'') AS report_date, ' +
    'lh.vn, lh.hn, os.bw AS weight, vs.age_y AS age, vs.sex, ' +
    'MAX(CASE WHEN lo.lab_items_code = ''231'' THEN lo.lab_order_result END) AS Creatinine, ' +
    'MAX(CASE WHEN lo.lab_items_code = ''660'' THEN lo.lab_order_result END) AS eGFR, ' +
    'CASE WHEN os.bw IS NULL OR os.bw = 0 OR os.bw > 150 THEN ''-'' ' +
    'WHEN vs.sex = ''1'' THEN ROUND(((140 - vs.age_y) * os.bw) / (72 * NULLIF(MAX(CASE WHEN lo.lab_items_code = ''231'' THEN lo.lab_order_result END), 0)), 2) ' +
    'WHEN vs.sex = ''2'' THEN ROUND(0.85 * ((140 - vs.age_y) * os.bw) / (72 * NULLIF(MAX(CASE WHEN lo.lab_items_code = ''231'' THEN lo.lab_order_result END), 0)), 2) ' +
    'END AS CrCl ' +
    'FROM lab_head lh ' +
    'INNER JOIN lab_order lo ON lh.lab_order_number = lo.lab_order_number ' +
    'INNER JOIN opdscreen os ON lh.vn = os.vn ' +
    'INNER JOIN vn_stat vs ON lh.vn = vs.vn ' +
    'WHERE lh.hn = "' + hn + '" ' +
    'AND lo.lab_items_code IN (''231'', ''660'') AND lo.lab_order_result > 0 ' +
    'AND lo.lab_order_result REGEXP ''^[0-9]+\.?[0-9]*$'' ' +
    'GROUP BY lh.report_date, lh.vn, lh.hn, os.bw, vs.age_y, vs.sex ' +
    'ORDER BY lh.report_date DESC LIMIT 5'
  );
end;




// Load prescription data into cds2.
procedure TForm1.LoadPrescriptionData(vn: string);
begin
  cds2.Data := hosxp_getdataset(
    'SELECT o.vstdate, CONCAT(d.name, " ", d.strength) AS name, o.icode, ' +
    'COALESCE(du.code, CONCAT(su.name1, su.name2, su.name3)) AS usage_or_sp_usage, o.qty ' +
    'FROM opitemrece o ' +
    'INNER JOIN drugitems d ON o.icode = d.icode ' +
    'LEFT OUTER JOIN drugusage du ON o.drugusage = du.drugusage ' +
    'LEFT OUTER JOIN sp_use su ON o.sp_use = su.sp_use ' +
    'WHERE o.vn = "' + vn + '" AND o.icode = "1000210"'
  );
end;


procedure TForm1.UpdateCheckboxVisibility(LatestEGFR: Double);
begin
  if LatestEGFR < 30 then
  begin
    // Show Checkfordelete and Checkforconfirm, hide other checkboxes
    Checkfordelete.Visible := True;
    Checkforconfirm.Visible := True;
    Checkforconfirm.Top := 25;
    Checkhalfx1.Visible := False;
    Check1x1.Visible := False;
    Check1x2.Visible := False;
    Check2x1.Visible := False;
    Check110.Visible := False;
  end
  else if (LatestEGFR >= 30)  then
  begin
    // Hide Checkfordelete and Checkforconfirm, show other checkboxes
    Checkfordelete.Visible := False;
    Checkforconfirm.Visible := true;
    Checkhalfx1.Visible := True;
    Checkhalfx1.Top := 5;
    Check1x1.Top := 25;
    Check1x2.Top := 45;
    Check2x1.Top := 65;
    Check110.Top := 85;
    Checkforconfirm.Top := 105;
    Check1x1.Visible := True;
    Check1x2.Visible := True;
    Check2x1.Visible := True;
    Check110.Visible := True;
  end
  else
  begin
    // If LatestEGFR >= 45, you can customize visibility as needed
    Checkfordelete.Visible := False;
    Checkforconfirm.Visible := False;
    Checkhalfx1.Visible := False;
    Check1x1.Visible := False;
    Check1x2.Visible := False;
    Check2x1.Visible := False;
    Check110.Visible := False;
  end;
end;




procedure TForm1.showdata(Sender: TObject);
var
  vn, hn: string;
  LatestEGFR: Double;
begin

  vn := GetVN;
  LoadPatientData(vn);
  hn := getsqldata('SELECT hn FROM vn_stat WHERE vn = "' + vn + '"');





  try
    LoadLabData(hn);
    LoadPrescriptionData(vn);


    // Calculate LatestEGFR based on loaded lab data
    if cds.RecordCount > 0 then
    begin
      cds.First; // Ensure the dataset is on the first record
      LatestEGFR := cds.FieldByName('eGFR').AsFloat;
      UpdateCheckboxVisibility(LatestEGFR); // Call the procedure to update checkbox visibility
    end;

  except
    on E: Exception do
      ShowMessage('Error loading dataset: ' + E.Message);
  end;
end;


// DeleteRecord deletes a specific record from cds2.
procedure TForm1.DeleteRecord(const RecordID: string);
procedure TForm1.UpdateRecord(const drugusage: string);
**********ต้องเขียนเองครับ*****************

procedure TForm1.btnConfirmClick(Sender: TObject);
var
  CheckedCount: Integer;
begin
  CheckedCount := 0;
 
  // Count the number of checked boxes
  if Checkhalfx1.Checked then CheckedCount := CheckedCount + 1;
  if Check1x1.Checked then CheckedCount := CheckedCount + 1;
  if Check1x2.Checked then CheckedCount := CheckedCount + 1;
  if Check2x1.Checked then CheckedCount := CheckedCount + 1;
  if Check110.Checked then CheckedCount := CheckedCount + 1;
  if Checkfordelete.Checked then CheckedCount := CheckedCount + 1;
  if Checkforconfirm.Checked then CheckedCount := CheckedCount + 1;

  // If no checkboxes or more than one are checked, show a message and exit
  if CheckedCount = 0 then
  begin
    ShowMessage('Please select one option to confirm.');
    Exit;
  end
  else if CheckedCount > 1 then
  begin
    ShowMessage('Please select only one option to confirm.');
    Exit;
  end;

  // If only one checkbox is selected, perform the appropriate action
  try
    if Checkhalfx1.Checked then
      UpdateRecord('0168')
    else if Check1x1.Checked then
      UpdateRecord('0011')
    else if Check1x2.Checked then
      UpdateRecord('0022')
    else if Check2x1.Checked then
      UpdateRecord('0154')
    else if Check110.Checked then
      UpdateRecord('0317')
    else if Checkfordelete.Checked then               
      DeleteRecord('1000210')
    else if Checkforconfirm.Checked then
      Close;  // Close the form if Checkforconfirm is checked

    Close; // Close the form after action

  except
    on E: Exception do
      ShowMessage('Error confirming action: ' + E.Message);
  end;
end;




procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // Free resources like datasets and other allocated objects
  cds.Close;
  cds2.Close;
  cds3.Close;


  // Set the form to be released from memory
  Action := caFree;
end;


end.

procedure TForm1.DeleteRecord(const RecordID: string);

**********ต้องเขียนเองครับ*************** ผมไม่มั่นใจความถูกต้อง
ใช้ cds3.Data := hosxp_getdataset('SELECT * FROM ...... ');
  cds3.Delete;
if cds3.ChangeCount > 0 then
  begin
    hosxp_updatedelta(cds3.Delta, 'SELECT * FROM ....... ');
    ShowMessage('Record deleted successfully.');
  end


procedure TForm1.UpdateRecord(const drugusage: string);

cds3.Edit;
    cds3.FieldByName('drugusage').AsString := drugusage;
    cds3.Post;


37
ลองแกะดูครับ
เปลี่ยน icode ของ Metformin และ lo.lab_items_code ของ eGFR ให้ตรงกับของโรงพยาบาล
เปลี่ยน drugusage เป็นวิธีใช้ที่ไม่เกิน 1000 mg/day

SYS_VN_SCRIPT
โค๊ด: [Select]
var
  vn,hn: string;
  lasteGFR: Double;
  isMetforminOrder, isWrongMetforminUsageDose: Boolean;

begin

    vn := GetGlobalValue('VN');
    //vn := '671113080230';
    hn  := getsqldata('select hn from vn_stat where vn="' + vn + '"');

  //******** metformin popup ******
    isMetforminOrder := StrToInt(getsqldata('SELECT COUNT(*) FROM opitemrece o WHERE o.vn = "' + vn + '" ' +
                                        'AND o.icode = ''1000210'' AND o.qty > 0')) > 0;
    lasteGFR := getsqldata('SELECT lo.lab_order_result ' +
                       'FROM lab_head lh ' +
                       'INNER JOIN lab_order lo ON lh.lab_order_number = lo.lab_order_number ' +
                       'WHERE lh.hn = "' + hn + '" ' +
                       'AND lo.lab_items_code = "660" ' +
                       'AND lo.lab_order_result > 0 ' +
                       'AND lo.lab_order_result REGEXP ''^[0-9]+\.?[0-9]*$'' ' +
                       'ORDER BY lh.report_date DESC LIMIT 1');
   isWrongMetforminUsageDose := StrToInt(getsqldata('SELECT COUNT(*) FROM opitemrece o WHERE o.vn = "' + vn + '" ' +
                                                   'AND o.icode = ''1000210'' AND o.qty > 0 ' +
                                                   'AND o.drugusage NOT IN (''0002172'', ''0011'', ''0014'', ''0022'', ''0033'', ''0154'', ''0168'', ''0321'', ''0336'')')) > 0;
    //showmessage(isWrongMetforminUsageDose);
    //showmessage(lasteGFR);
    try
      if  (isMetforminOrder and (StrToFloat(lasteGFR) > 0) and (StrToFloat(lasteGFR) < 30)) or
          (isMetforminOrder and (StrToFloat(lasteGFR) > 30) and (StrToFloat(lasteGFR) < 45) and isWrongMetforminUsageDose) then
          begin
          runHOSxP_ScriptProgram('Drugblocker');
      end;
    except
      on E: EConvertError do
      showmessage('Invalid GFR value');
    end;
   //***************************

end;
38
Development / อยากให้ปรับหน้าจอระบบนัดหมายครับ hosxp v3
« กระทู้ล่าสุด โดย Knott เมื่อ พฤศจิกายน 13, 2024, 13:16:33 PM »
1. อยากให้จำค่า ช่องติ๊ก all ครับ เพราะ user จะไม่สามารถเลือกห้องตรววจได้ถ้าไม่ติ๊ก all
2. เพิ่มปุ่ม ปฏิทิน หน้าจอทะเบียนผู้ป่วยนัดหมาย หน้าจอระบบนัดหมายผู้ป่วยครับ ที่สามารถกรองเฉพาะคลินิกได้โดยไม่อิงกับชื่อแพทย์ครับ เพื่อความสะดวกของพยาบาลในการจัดการคลินิกครับ
3. บางหน้าจอที่มีปุ่มรายการนัด ยังขึ้นเป็นรายการนัดระบบเก่า เวลายกเลิกนัดใน หน้าระบบใหม่ หน้าจอนัดระบบเก่ารายชื่อไม่หายไปครับ
4. หน้าปฏิทิน แสดงเฉพาะคลินิกไม่ได้ ทำให้ตัวเลขมุมเขียวอิงตามชื่อแพทย์ จะไม่สัมพันกับตัวเลขมุมแดงที่จะกัดนัดในคลินิก
39
แจ้งข้อผิดพลาดการทำงานของ HOSxP V3 / Re: ปัญหาเวอร์ชั่น 3.67.11.7
« กระทู้ล่าสุด โดย tangkeaw เมื่อ พฤศจิกายน 11, 2024, 10:04:09 AM »
ติ๊ก zeosdbo ขอขยายความหน่อยครับ ว่าติ๊กแล้วเพื่อประโยชน์ด้านใดบ้างครับ ขอบคุณครับ
40
แจ้งข้อผิดพลาดการทำงานของ HOSxP V3 / Re: ปัญหาเวอร์ชั่น 3.67.11.7
« กระทู้ล่าสุด โดย Call Center เมื่อ พฤศจิกายน 11, 2024, 09:20:52 AM »
แนะนำให้ตรวจสอบหน้าการเชื่อมต่อ ให้ติ๊กใช้ zeosdbo เอาไว้ แล้ว Login เข้าใช้งานตามปกติค่ะ
หน้า: 1 2 3 [4] 5 6 ... 10