VistA-cprs/CPRS-Chart/fReportsAdhocComponent1.pas

821 lines
26 KiB
Plaintext

unit fReportsAdhocComponent1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Grids, ORCtrls, ORfn, Buttons, fAutoSz,
VA508AccessibilityManager;
type
TfrmReportsAdhocComponent1 = class(TfrmAutoSz)
ORComboBox1: TORComboBox;
Splitter1: TSplitter;
Panel2: TPanel;
Panel3: TPanel;
btnCancelMain: TButton;
btnOKMain: TButton;
Panel1: TPanel;
ORListBox2: TORListBox;
Panel6: TPanel;
btnRemoveComponent: TButton;
btnRemoveAllComponents: TButton;
Splitter4: TSplitter;
Panel7: TPanel;
lblHeaderName: TLabel;
edtHeaderName: TCaptionEdit;
lblOccuranceLimit: TLabel;
edtOccuranceLimit: TCaptionEdit;
lblTimeLimit: TLabel;
cboTimeLimit: TCaptionComboBox;
gpbDisplay: TGroupBox;
ckbHospitalLocation: TCheckBox;
ckbProviderNarrative: TCheckBox;
cboICD: TCaptionComboBox;
lblICD: TLabel;
btnAddComponent: TButton;
pnl5Button: TKeyClickPanel;
SpeedButton5: TSpeedButton;
pnl6Button: TKeyClickPanel;
SpeedButton6: TSpeedButton;
Timer1: TTimer;
ORListBox1: TORListBox;
lblItems: TLabel;
btnEditSubitems: TButton;
GroupBox1: TGroupBox;
rbtnHeader: TRadioButton;
rbtnAbbrev: TRadioButton;
rbtnName: TRadioButton;
procedure FormCreate(Sender: TObject);
procedure btnCancelMainClick(Sender: TObject);
procedure btnOKMainClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure HideEdits;
procedure ORListBox2Click(Sender: TObject);
procedure btnRemoveComponentClick(Sender: TObject);
procedure btnRemoveAllComponentsClick(Sender: TObject);
procedure Splitter4CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure btnAddComponentClick(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure ORListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ORListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ORListBox2EndDrag(Sender, Target: TObject; X, Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure btnEditSubitemsClick(Sender: TObject);
procedure edtHeaderNameExit(Sender: TObject);
procedure edtOccuranceLimitExit(Sender: TObject);
procedure cboTimeLimitExit(Sender: TObject);
procedure ckbHospitalLocationExit(Sender: TObject);
procedure ckbProviderNarrativeExit(Sender: TObject);
procedure cboICDExit(Sender: TObject);
procedure LoadComponents(Dest: TStrings);
procedure FormShow(Sender: TObject);
procedure rbtnAbbrevClick(Sender: TObject);
procedure rbtnNameClick(Sender: TObject);
procedure rbtnHeaderClick(Sender: TObject);
procedure pnl5ButtonEnter(Sender: TObject);
procedure pnl5ButtonExit(Sender: TObject);
procedure ORComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
GoingUp: Boolean;
OKPressed: Boolean;
public
{ Public declarations }
end;
var
frmReportsAdhocComponent1: TfrmReportsAdhocComponent1;
uComponents: TStringList; {This is what is built as SubItems are
selected. It is identified by segment
and is ordered in the order that the items
have been selected or moved by the user.
Segment^file #^ifn of file^zero node of file}
uCurrentComponent: Integer; //Pointer to current Component ID
HSCompCtr: integer; //Component ID
uFile: String; //Mumps file Number of Subitems
uLimit: Integer; //HS Component Subitem Selection limit
uLimitCount: Integer; //Count of current Subitem Selections
function ExecuteAdhoc1: Boolean;
implementation
uses fReportsAdhocSubItem1, fReports, uCore, rReports;
{$R *.DFM}
type
PHSCompRec = ^THSCompRec;
THSCompRec = object
ID: integer;
Segment: string;
Name: string;
OccuranceLimit: string;
TimeLimit: string;
Header: string;
HospitalLocation: string;
ICDText: string;
ProviderNarrative: string;
end;
function ExecuteAdhoc1: Boolean;
begin
Result := False;
frmReportsAdhocComponent1 := TfrmReportsAdhocComponent1.Create(Application);
try
ResizeFormToFont(TForm(frmReportsAdhocComponent1));
frmReportsAdhocComponent1.ShowModal;
if frmReportsAdhocComponent1.OKPressed then
Result := True;
finally
frmReportsAdhocComponent1.Release;
end;
end;
procedure TfrmReportsAdhocComponent1.FormCreate(Sender: TObject);
begin
HideEdits;
HSCompCtr := 0;
uFile := '';
uLimit := 0;
uLimitCount := 1;
uComponents := TStringList.Create;
Splitter1.Left := ORComboBox1.Left + ORComboBox1.Width + 1;
Splitter1.Align := ORComboBox1.Align;
Panel6.Left := Splitter1.Left + Splitter1.Width;
Panel6.Align := Splitter1.Align;
ORListBox2.Left := Panel6.Left + Panel6.Width;
ORListBox2.Align := Panel6.Align;
Splitter4.Left := ORListBox2.Left + ORListBox2.Width + 1;
Splitter4.Align := ORListBox2.Align;
end;
procedure TfrmReportsAdhocComponent1.FormShow(Sender: TObject);
begin
inherited;
if uListState = 1 then rbtnAbbrev.Checked := true;
if uListState = 0 then rbtnName.Checked := true;
if uListState = 2 then rbtnHeader.Checked := true;
LoadComponents(ORComboBox1.Items);
end;
procedure TfrmReportsAdhocComponent1.btnCancelMainClick(Sender: TObject);
begin
Close;
end;
procedure TfrmReportsAdhocComponent1.btnOKMainClick(Sender: TObject);
var
i,j: integer;
begin
OKPressed := True;
with ORListBox2 do
begin
if Items.Count > 0 then
begin
for i := 0 to Items.Count - 1 do
begin
uHSComponents.Add(PHSCompRec(Items.Objects[i])^.Segment + '^' +
PHSCompRec(Items.Objects[i])^.OccuranceLimit + '^' +
PHSCompRec(Items.Objects[i])^.TimeLimit + '^' +
PHSCompRec(Items.Objects[i])^.Header + '^' +
PHSCompRec(Items.Objects[i])^.HospitalLocation + '^' +
PHSCompRec(Items.Objects[i])^.ICDText + '^' +
PHSCompRec(Items.Objects[i])^.ProviderNarrative);
for j := 0 to uComponents.Count-1 do
if StrToInt(piece(uComponents[j],'^',1)) =
PHSCompRec(Items.Objects[i])^.ID then
uHSComponents.Add(PHSCompRec(Items.Objects[i])^.Segment + '^' +
PHSCompRec(Items.Objects[i])^.OccuranceLimit + '^' +
PHSCompRec(Items.Objects[i])^.TimeLimit + '^' +
PHSCompRec(Items.Objects[i])^.Header + '^' +
PHSCompRec(Items.Objects[i])^.HospitalLocation + '^' +
PHSCompRec(Items.Objects[i])^.ICDText + '^' +
PHSCompRec(Items.Objects[i])^.ProviderNarrative + '^' +
uComponents[j]);
end;
end;
end;
if uHSComponents.Count > 0 then
begin
HSReportText(uLocalReportData, uHSComponents);
Close;
end
else
Application.MessageBox(
'Sorry, no Components have been selected',
'Selection Error',MB_OK + MB_DEFBUTTON1);
end;
procedure TfrmReportsAdhocComponent1.FormClose(Sender: TObject; var Action: TCloseAction);
var
aParam: integer;
begin
aParam := 1;
if rbtnName.Checked = true then
aParam := 0
else if rbtnAbbrev.Checked = true then
aParam := 1
else if rbtnHeader.Checked = true then
aParam := 2;
SetAdhocLookup(aParam);
uComponents.Free;
end;
procedure TfrmReportsAdhocComponent1.HideEdits;
begin
lblTimeLimit.Enabled := False;
lblOccuranceLimit.Enabled := False;
cboTimeLimit.Enabled := False;
edtOccuranceLimit.Enabled := False;
gpbDisplay.Enabled := False;
ckbHospitalLocation.Enabled := False;
ckbProviderNarrative.Enabled := False;
lblICD.Enabled := False;
cboICD.Enabled := False;
lblItems.Enabled := False;
ORListBox1.Enabled := False;
btnEditSubitems.Enabled := False;
cboTimeLimit.Text := '';
edtOccuranceLimit.Text := '';
ckbHospitalLocation.Checked := False;
ckbProviderNarrative.Checked := False;
cboICD.Text := '';
end;
procedure TfrmReportsAdhocComponent1.ORListBox2Click(Sender: TObject);
var
i: integer;
a: string;
uHSCompFiles: TStringList;
begin
HideEdits;
with ORListBox2 do
a := PHSCompRec(Items.Objects[ItemIndex])^.Segment;
uHSCompFiles := TStringList.Create;
HSComponentFiles(uHSCompFiles,Piece(a,';',2));
If uHSCompFiles.Count > 0 then
begin
uFile := Piece(uHSCompFiles.Strings[0],'^',3);
If Length(uFile) > 0 then
begin
lblItems.Enabled := True;
ORListBox1.Enabled := True;
btnEditSubItems.Enabled := True;
end;
end;
uHSCompFiles.Free;
with ORListBox2 do
begin
if length(Piece(Items[ItemIndex],'^',5))>0 then
begin
edtHeaderName.Text := PHSCompRec(Items.Objects[ItemIndex])^.Header;
edtHeaderName.Enabled := True;
lblHeaderName.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',3))>0 then
begin
edtOccuranceLimit.Text :=
PHSCompRec(Items.Objects[ItemIndex])^.OccuranceLimit;
edtOccuranceLimit.Enabled := True;
lblOccuranceLimit.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',4))>0 then
begin
cboTimeLimit.Text :=
PHSCompRec(Items.Objects[ItemIndex])^.TimeLimit;
cboTimeLimit.Enabled := True;
lblTimeLimit.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',6))>0 then
begin
gpbDisplay.Enabled := True;
ckbHospitalLocation.Enabled := True;
if PHSCompRec(Items.Objects[ItemIndex])^.HospitalLocation = 'Y'
then ckbHospitalLocation.Checked := True
else
ckbHospitalLocation.Checked := False;
end;
if length(Piece(Items[ItemIndex],'^',7))>0 then
begin
gpbDisplay.Enabled := True;
lblICD.Enabled := True;
cboICD.Enabled := True;
cboICD.Text := PHSCompRec(Items.Objects[ItemIndex])^.ICDText;
end;
if length(Piece(Items[ItemIndex],'^',8))>0 then
begin
gpbDisplay.Enabled := True;
ckbProviderNarrative.Enabled := True;
if PHSCompRec(Items.Objects[ItemIndex])^.ProviderNarrative = 'Y'
then ckbProviderNarrative.Checked := True
else
ckbProviderNarrative.Checked := False;
end;
uCurrentComponent := PHSCompRec(Items.Objects[ItemIndex])^.ID;
end;
ORListBox1.Clear;
for i := 0 to uComponents.Count-1 do
if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
if ORListBox1.Items.Count > 0 then
begin
lblItems.Enabled := True;
ORListBox1.Enabled := True;
btnEditSubItems.Enabled := True;
end;
end;
procedure TfrmReportsAdhocComponent1.btnRemoveComponentClick(Sender: TObject);
var
i: integer;
chk: integer;
begin
HideEdits;
edtHeaderName.Text := '';
edtHeaderName.Enabled := False;
lblHeaderName.Enabled := False;
chk := 0;
ORListBox1.Clear;
If ORListBox2.Items.Count < 1 then
begin
InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
Exit;
end
else
for i := 0 to ORListBox2.Items.Count - 1 do
if ORListBox2.Selected[i] then
chk := 1;
if chk = 0 then
begin
InfoBox('Please select the item you wish to remove', 'Information', MB_OK or MB_ICONINFORMATION);
Exit;
end;
With ORListBox2 do
begin
for i := uComponents.Count-1 downto 0 do
if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
uComponents.Delete(i);
Items.Delete(ItemIndex);
if Items.Count < 1 then
begin
SpeedButton5.Enabled := false;
SpeedButton6.Enabled := false;
end;
end;
end;
procedure TfrmReportsAdhocComponent1.btnRemoveAllComponentsClick(Sender: TObject);
var
i: integer;
begin
HideEdits;
edtHeaderName.Text := '';
edtHeaderName.Enabled := False;
lblHeaderName.Enabled := False;
ORListBox1.Clear;
If ORListBox2.Items.Count < 1 then
begin
InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
Exit;
end;
if InfoBox('This button will remove all selected components. OK?',
'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
begin
With ORListBox2 do
begin
for i := uComponents.Count-1 downto 0 do
uComponents.Delete(i);
for i := Items.Count-1 downto 0 do
Items.Delete(i);
end;
SpeedButton5.Enabled := false;
SpeedButton6.Enabled := false;
end;
end;
procedure TfrmReportsAdhocComponent1.Splitter4CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
begin
if NewSize < 50 then
NewSize := 50;
end;
procedure TfrmReportsAdhocComponent1.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
begin
if NewSize < 50 then
NewSize := 50;
end;
procedure TfrmReportsAdhocComponent1.btnAddComponentClick(Sender: TObject);
var
HSCompPtr: PHSCompRec;
i: Integer;
uHSCompFiles: TStringList;
uCompSubs: TStringList;
begin
If ORComboBox1.ItemIndex < 0 then
begin
InfoBox('Please select a component to Add.', 'Information', MB_OK or MB_ICONINFORMATION);
Exit;
end;
ORListBox1.Clear;
HideEdits;
New(HSCompPtr);
HSCompCtr := HSCompCtr + 1;
HSCompPtr^.ID := HSCompCtr;
uLimit := 0;
with ORComboBox1 do
begin
HSCompPtr^.Segment := Piece(Items[ItemIndex],'^',1);
HSCompPtr^.Name := Piece(Items[ItemIndex],'^',2);
HSCompPtr^.OccuranceLimit := Piece(Items[ItemIndex],'^',3);
HSCompPtr^.TimeLimit := UpperCase(Piece(Items[ItemIndex],'^',4));
HSCompPtr^.Header := Piece(Items[ItemIndex],'^',5);
HSCompPtr^.HospitalLocation := Piece(Items[ItemIndex],'^',6);
HSCompPtr^.ICDText := Piece(Items[ItemIndex],'^',7);
HSCompPtr^.ProviderNarrative := Piece(Items[ItemIndex],'^',8);
uCurrentComponent := HSCompCtr;
end;
with ORListBox2 do
begin
Items.AddObject(
ORComboBox1.Items[ORComboBox1.ItemIndex],TObject(HSCompPtr));
ItemIndex := Items.Count-1;
SpeedButton5.Enabled := true;
SpeedButton6.Enabled := true;
end;
uHSCompFiles := TStringList.Create;
uCompSubs := TStringList.Create;
HSComponentFiles(uHSCompFiles, Piece(HSCompPtr^.Segment,';',2));
If uHSCompFiles.Count > 0 then
begin
uFile := Piece(uHSCompFiles.Strings[0],'^',3);
If Length(Piece(uHSCompFiles.Strings[0],'^',4)) > 0 then
uLimit := StrToInt(Piece(uHSCompFiles.Strings[0],'^',4));
If Length(uFile) > 0 then
begin
lblItems.Enabled := True;
ORListBox1.Enabled := True;
btnEditSubItems.Enabled := True;
HSComponentSubs(uCompSubs, Piece(HSCompPtr^.Segment,';',1));
If uCompSubs.Count > 0 then
begin
ORListBox1.Clear;
FastAssign(uCompSubs, ORListBox1.Items);
for i := 0 to uCompSubs.Count-1 do
uComponents.Add(IntToStr(uCurrentComponent) + '^' + uFile +
'^' + uCompSubs[i]);
end
Else
If ExecuteForm2 = True then
begin
ORListBox1.Clear;
for i := 0 to uComponents.Count-1 do
if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
if ORListBox1.Items.Count < 1 then
begin
InfoBox('No sub-items were selected', 'Information', MB_OK or MB_ICONINFORMATION);
end;
end
else
begin
InfoBox('No sub-items were selected', 'Information', MB_OK or MB_ICONINFORMATION);
end;
end;
end;
with ORComboBox1 do
begin
if length(Piece(Items[ItemIndex],'^',5))>0 then
begin
edtHeaderName.Text := Piece(Items[ItemIndex],'^',5);
edtHeaderName.Enabled := True;
lblHeaderName.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',3))>0 then
begin
edtOccuranceLimit.Text := Piece(Items[ItemIndex],'^',3);
edtOccuranceLimit.Enabled := True;
lblOccuranceLimit.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',4))>0 then
begin
cboTimeLimit.Text := Piece(Items[ItemIndex],'^',4);
cboTimeLimit.Enabled := True;
lblTimeLimit.Enabled := True;
end;
if length(Piece(Items[ItemIndex],'^',6))>0 then
begin
gpbDisplay.Enabled := True;
ckbHospitalLocation.Enabled := True;
if Piece(Items[ItemIndex],'^',6) = 'Y' then
ckbHospitalLocation.Checked := True;
end;
if length(Piece(Items[ItemIndex],'^',7))>0 then
begin
gpbDisplay.Enabled := True;
lblICD.Enabled := True;
cboICD.Enabled := True;
if Piece(Items[ItemIndex],'^',7) = 'L' then
cboICD.Text := 'Long text';
if Piece(Items[ItemIndex],'^',7) = 'S' then
cboICD.Text := 'Short text';
if Piece(Items[ItemIndex],'^',7) = 'C' then
cboICD.Text := 'Code only';
if Piece(Items[ItemIndex],'^',7) = 'T' then
cboICD.Text := 'Text only';
if Piece(Items[ItemIndex],'^',7) = 'N' then
cboICD.Text := 'None';
end;
if length(Piece(Items[ItemIndex],'^',8))>0 then
begin
gpbDisplay.Enabled := True;
ckbProviderNarrative.Enabled := True;
if Piece(Items[ItemIndex],'^',8) = 'Y' then
ckbProviderNarrative.Checked := True;
end;
end;
uHSCompFiles.Free;
uCompSubs.Free;
end;
procedure TfrmReportsAdhocComponent1.SpeedButton5Click(Sender: TObject);
var
i:integer;
begin
if SpeedButton5.Enabled then
with ORListBox2 do
if ItemIndex > 0 then
begin
i := ItemIndex;
Items.Move(i, i-1);
ItemIndex := i-1;
end;
end;
procedure TfrmReportsAdhocComponent1.SpeedButton6Click(Sender: TObject);
var
i : Integer;
begin
if SpeedButton6.Enabled then
with ORListbox2 do
if (ItemIndex < Items.Count-1) and
(ItemIndex <> -1) then
begin
i := ItemIndex;
Items.Move(i, i+1);
ItemIndex := i+1;
end;
end;
procedure TfrmReportsAdhocComponent1.ORListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Sender = Source) and
(TORListBox(Sender).ItemAtPos(Point(x,y), False) >= 0);
if Accept then
with Sender as TORListbox do
if Y > Height - ItemHeight then
begin
GoingUp := False;
Timer1.Enabled := True;
end
else if Y < ItemHeight then
begin
GoingUp := True;
Timer1.Enabled := True;
end
else Timer1.Enabled := False;
end;
procedure TfrmReportsAdhocComponent1.ORListBox2DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
NuPos: Integer;
begin
with Sender as TORListbox do
begin
NuPos := ItemAtPos(Point(X,Y),False);
If NuPos >= Items.Count then Dec(NuPos);
Items.Move(ItemIndex, NuPos);
ItemIndex := NuPos;
end;
end;
procedure TfrmReportsAdhocComponent1.ORListBox2EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
if (Sender = ORListBox2) and (Target = ORComboBox1) then
btnRemoveComponentClick(nil);
Timer1.Enabled := False;
end;
procedure TfrmReportsAdhocComponent1.Timer1Timer(Sender: TObject);
begin
with ORListBox2 do
if GoingUp then
if TopIndex > 0 then TopIndex := TopIndex - 1
else Timer1.Enabled := False
else
if TopIndex < Items.Count - 1 then TopIndex := TopIndex + 1
else Timer1.Enabled := False;
end;
procedure TfrmReportsAdhocComponent1.btnEditSubitemsClick(Sender: TObject);
var
i: integer;
begin
If ExecuteForm2 = True then
begin
lblItems.Enabled := False;
ORListBox1.Enabled := False;
ORListBox1.Clear;
for i := 0 to uComponents.Count-1 do
if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
if ORListBox1.Items.Count > 0 then
begin
lblItems.Enabled := True;
ORListBox1.Enabled := True;
btnEditSubItems.Enabled := True;
end;
end;
end;
procedure TfrmReportsAdhocComponent1.edtHeaderNameExit(Sender: TObject);
var
i: integer;
begin
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
PHSCompRec(ORListBox2.Items.Objects[i])^.Header :=
edtHeaderName.Text;
end;
procedure TfrmReportsAdhocComponent1.edtOccuranceLimitExit(
Sender: TObject);
var
i: integer;
begin
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
PHSCompRec(ORListBox2.Items.Objects[i])^.OccuranceLimit :=
edtOccuranceLimit.Text;
end;
procedure TfrmReportsAdhocComponent1.cboTimeLimitExit(Sender: TObject);
var
i: integer;
begin
if cboTimeLimit.Text = 'No Limit' then
cboTimeLimit.Text := '99Y';
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
PHSCompRec(ORListBox2.Items.Objects[i])^.TimeLimit :=
cboTimeLimit.Text;
end;
procedure TfrmReportsAdhocComponent1.ckbHospitalLocationExit(
Sender: TObject);
var
i: integer;
begin
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
if ckbHospitalLocation.Checked = True then
PHSCompRec(ORListBox2.Items.Objects[i])^.HospitalLocation := 'Y'
else
PHSCompRec(ORListBox2.Items.Objects[i])^.HospitalLocation := 'N';
end;
procedure TfrmReportsAdhocComponent1.ckbProviderNarrativeExit(
Sender: TObject);
var
i: integer;
begin
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
if ckbProviderNarrative.Checked = True then
PHSCompRec(ORListBox2.Items.Objects[i])^.ProviderNarrative := 'Y'
else
PHSCompRec(ORListBox2.Items.Objects[i])^.ProviderNarrative := 'N';
end;
procedure TfrmReportsAdhocComponent1.cboICDExit(Sender: TObject);
var
i: integer;
begin
for i := 0 to ORListBox2.Items.Count - 1 do
if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
PHSCompRec(ORListBox2.Items.Objects[i])^.ICDText := cboICD.Text;
end;
procedure TfrmReportsAdhocComponent1.ORComboBox1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
//This used to be a KeyUp. I changed it because it can call up the component
//selection screen, which can be left with a return. Leaving the component
//screen happens on key down, so this screen gets focused and receives the key
//up message, so it pops up tyhe component screen again.
If Key = 13 then
with ORComboBox1 do
if (Text <> '') and (Items.IndexOf (Text) >= 0) then
begin
ItemIndex := Items.IndexOf(Text);
btnAddComponentClick(nil);
end;
end;
procedure TfrmReportsAdhocComponent1.LoadComponents(Dest: TStrings);
var
sComponents: TStringList;
i: integer;
s: string;
begin
sComponents := TStringList.Create;
if uListState = 0 then
begin
HSComponents(sComponents);
for i := 0 to sComponents.Count - 1 do
begin
s := sComponents.Strings[i];
s := MixedCase(piece(s,'[',1)) + '[' + piece(s,'[',2);
sComponents.Strings[i] := s;
end;
end
else if uListState = 1 then
begin
HSABVComponents(sComponents);
for i := 0 to sComponents.Count - 1 do
begin
s := sComponents.Strings[i];
s := piece(s,'-',1) + '-' + MixedCase(piece(s,'-',2));
sComponents.Strings[i] := s;
end;
end
else if uListState = 2 then
begin
HSDispComponents(sComponents);
for i := 0 to sComponents.Count - 1 do
begin
s := sComponents.Strings[i];
s := MixedCase(piece(s,'[',1)) + '[' + piece(s,'[',2);
sComponents.Strings[i] := s;
end;
end;
QuickCopy(sComponents,Dest);
sComponents.Free;
end;
procedure TfrmReportsAdhocComponent1.rbtnAbbrevClick(Sender: TObject);
begin
inherited;
uListState := 1;
ORComboBox1.Clear;
LoadComponents(ORComboBox1.Items);
ORComboBox1.SetFocus;
end;
procedure TfrmReportsAdhocComponent1.rbtnNameClick(Sender: TObject);
begin
inherited;
uListState := 0;
ORComboBox1.Clear;
LoadComponents(ORComboBox1.Items);
ORComboBox1.SetFocus;
end;
procedure TfrmReportsAdhocComponent1.rbtnHeaderClick(Sender: TObject);
begin
inherited;
uListState := 2;
ORComboBox1.Clear;
LoadComponents(ORComboBox1.Items);
ORComboBox1.SetFocus;
end;
procedure TfrmReportsAdhocComponent1.pnl5ButtonEnter(Sender: TObject);
begin
inherited;
(Sender as TPanel).BevelOuter := bvRaised;
end;
procedure TfrmReportsAdhocComponent1.pnl5ButtonExit(Sender: TObject);
begin
inherited;
(Sender as TPanel).BevelOuter := bvNone;
end;
end.