unit fODMedOIFA;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ORCtrls, ExtCtrls, fAutoSz;

type
  TfrmODMedOIFA = class(TForm)
    Label1: TLabel;
    lstFormAlt: TORListBox;
    Label2: TStaticText;
    btnPanel: TPanel;
    cmdYes: TButton;
    cmdNo: TButton;
    procedure FormCreate(Sender: TObject);
    procedure cmdYesClick(Sender: TObject);
    procedure cmdNoClick(Sender: TObject);
    procedure lstFormAltClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FSelected: string;
  end;

procedure CheckFormularyOI(var AnIEN: Integer; var AName: string; ForInpatient: Boolean);
procedure CheckFormularyDose(DispDrug: Integer; var OI: Integer; var OIName: string;
  ForInpatient: Boolean);

implementation

{$R *.DFM}

uses ORFn, rODMeds, rMisc;

procedure CheckFormularyOI(var AnIEN: Integer; var AName: string; ForInpatient: Boolean);

const
  TX_NO_FORM_ALT = 'This drug is not in the formulary!' + CRLF +
                   'There are no formulary alternatives entered for this item.' + CRLF +
                   'Please consult with your pharmacy before ordering this item.';
  TC_NO_FORM_ALT = 'No Formulary Alternatives';

var
  frmODMedOIFA: TfrmODMedOIFA;
  FormAltList: TStringList;
begin
  FormAltList := TStringList.Create;
  try
    LoadFormularyAltOI(FormAltList, AnIEN, ForInpatient);
    if FormAltList.Count > 0 then
    begin
      frmODMedOIFA := TfrmODMedOIFA.Create(Application);
      try
        ResizeFormToFont(TForm(frmODMedOIFA));
        with frmODMedOIFA do
        begin
          lstFormAlt.Items.Assign(FormAltList);
          ShowModal;
          if Length(FSelected) > 0 then
          begin
            AnIEN := StrToIntDef(Piece(FSelected, U, 1), 0);
            AName := Piece(FSelected, U, 2);
          end;
        end; {with frmODMedOIFA}
      finally
        frmODMedOIFA.Release;
      end; {frmODMedOIFA}
    end
    else messageDlg(TX_NO_FORM_ALT,mtWarning, [mbOK],0);
  finally
    FormAltList.Free;
  end; {FormAltList}
end;

procedure CheckFormularyDose(DispDrug: Integer; var OI: Integer; var OIName: string;
  ForInpatient: Boolean);
var
  frmODMedOIFA: TfrmODMedOIFA;
  FormAltList: TStringList;
begin
  FormAltList := TStringList.Create;
  try
    LoadFormularyAltDose(FormAltList, DispDrug, OI, ForInpatient);
    if FormAltList.Count > 0 then
    begin
      frmODMedOIFA := TfrmODMedOIFA.Create(Application);
      try
        ResizeFormToFont(TForm(frmODMedOIFA));
        with frmODMedOIFA do
        begin
          lstFormAlt.Items.Assign(FormAltList);
          ShowModal;
          if Length(FSelected) > 0 then
          begin
            OI     := StrToIntDef(Piece(FSelected, U, 1), 0);
            OIName := Piece(FSelected, U, 2);
          end;
        end; {with frmODMedOIFA}
      finally
        frmODMedOIFA.Release;
      end; {frmODMedOIFA}
    end; {if FormAltList}
  finally
    FormAltList.Free;
  end; {FormAltList}
end;

procedure TfrmODMedOIFA.FormCreate(Sender: TObject);
begin
  inherited;
  FSelected := '';
end;

procedure TfrmODMedOIFA.lstFormAltClick(Sender: TObject);
begin
  inherited;
  if lstFormAlt.ItemIndex > -1 then cmdYes.Enabled := True;
end;

procedure TfrmODMedOIFA.cmdYesClick(Sender: TObject);
begin
  inherited;
  with lstFormAlt do if ItemIndex > -1 then FSelected := Items[ItemIndex];
  Close;
end;

procedure TfrmODMedOIFA.cmdNoClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmODMedOIFA.FormShow(Sender: TObject);
begin
  inherited;
  SetFormPosition(Self);
end;

procedure TfrmODMedOIFA.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  SaveUserBounds(Self);  
end;

end.
