Summary Table

Categories Total Count
PII 20
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

unit fGMV_Qualifiers;
{
================================================================================
*
* Application: Vitals
* Revision: $Revision: 1 $ $Modtime: 2/26/09 12:50p $
* Developer:
PII
* Site: Hines OIFO
*
* Description: Pop-up form for qualifiers when entering vitals.
*
* Notes:
*
================================================================================
* $Archive: /Vitals/5.0 (Version 5.0)/5.0.23 (Patch 23)/VITALS_5_0_23_8/Source/VITALSDATAENTRY/fGMV_Qualifiers.pas $
*
* $History: fGMV_Qualifiers.pas $
*
* ***************** Version 1 *****************
* User:
PII Date: 8/12/09 Time: 8:29a
* Created in $/Vitals/5.0 (Version 5.0)/5.0.23 (Patch 23)/VITALS_5_0_23_8/Source/VITALSDATAENTRY
*
* ***************** Version 1 *****************
* User:
PII Date: 3/09/09 Time: 3:38p
* Created in $/Vitals/5.0 (Version 5.0)/5.0.23 (Patch 23)/VITALS_5_0_23_6/Source/VITALSDATAENTRY
*
* ***************** Version 1 *****************
* User:
PII Date: 1/13/09 Time: 1:26p
* Created in $/Vitals/5.0 (Version 5.0)/5.0.23 (Patch 23)/VITALS_5_0_23_4/Source/VITALSDATAENTRY
*
* ***************** Version 1 *****************
* User:
PII Date: 5/14/07 Time: 10:29a
* Created in $/Vitals GUI 2007/Vitals-5-0-18/VITALSDATAENTRY
*
* ***************** Version 1 *****************
* User:
PII Date: 5/16/06 Time: 5:43p
* Created in $/Vitals/VITALS-5-0-18/VitalsDataEntry
* GUI v. 5.0.18 updates the default vital type IENs with the local
* values.
*
* ***************** Version 1 *****************
* User:
PII Date: 5/16/06 Time: 5:33p
* Created in $/Vitals/Vitals-5-0-18/VITALS-5-0-18/VitalsDataEntry
*
* ***************** Version 2 *****************
* User:
PII Date: 7/22/05 Time: 3:51p
* Updated in $/Vitals/Vitals GUI v 5.0.2.1 -5.0.3.1 - Patch GMVR-5-7 (CASMed, CCOW) - Delphi 6/VitalsDataEntry
*
* ***************** Version 1 *****************
* User:
PII Date: 5/24/05 Time: 3:35p
* Created in $/Vitals/Vitals GUI v 5.0.2.1 -5.0.3.1 - Patch GMVR-5-7 (CASMed, No CCOW) - Delphi 6/VitalsDataEntry
*
* ***************** Version 1 *****************
* User:
PII Date: 4/16/04 Time: 4:20p
* Created in $/Vitals/Vitals GUI Version 5.0.3 (CCOW, CPRS, Delphi 7)/VITALSDATAENTRY
*
* ***************** Version 2 *****************
* User:
PII Date: 1/30/04 Time: 4:32p
* Updated in $/VitalsLite/VitalsLiteDLL
*
* ***************** Version 1 *****************
* User:
PII Date: 1/15/04 Time: 3:06p
* Created in $/VitalsLite/VitalsLiteDLL
* Vitals Lite DLL
*
* ***************** Version 1 *****************
* User:
PII Date: 10/29/03 Time: 4:15p
* Created in $/Vitals503/Vitals User
* Version 5.0.3
*
* ***************** Version 3 *****************
* User:
PII Date: 7/16/03 Time: 5:40p
* Updated in $/Vitals GUI Version 5.0/VitalsUserNoCCOW
*
* ***************** Version 2 *****************
* User:
PII Date: 6/05/03 Time: 2:01p
* Updated in $/Vitals GUI Version 5.0/VitalsUserNoCCOW
*
* ***************** Version 1 *****************
* User:
PII Date: 5/21/03 Time: 1:18p
* Created in $/Vitals GUI Version 5.0/VitalsUserNoCCOW
* Pre CCOW Version of Vitals User
*
* ***************** Version 4 *****************
* User:
PII Date: 7/18/02 Time: 5:57p
* Updated in $/Vitals GUI Version 5.0/Vitals User
*
* ***************** Version 3 *****************
* User:
PII Date: 7/12/02 Time: 5:00p
* Updated in $/Vitals GUI Version 5.0/Vitals User
* GUI Version T28
*
* ***************** Version 2 *****************
* User:
PII Date: 7/01/02 Time: 5:14p
* Updated in $/Vitals GUI Version 5.0/Vitals User
*
* ***************** Version 1 *****************
* User:
PII Date: 4/04/02 Time: 12:04p
* Created in $/Vitals GUI Version 5.0/Vitals User
*
*
================================================================================
}
interface

uses
Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
CheckLst,
ExtCtrls
, uGMV_FileEntry
, uGMV_Const
, uGMV_GlobalVars
, uGMV_VitalTypes
, uGMV_Template
;

type
TfrmGMV_Qualifiers = class(TForm)
pnlMain: TPanel;
pnlBottom: TPanel;
edtQuals: TEdit;
sb: TScrollBox;
Panel1: TPanel;
btnOK: TButton;
btnCancel: TButton;
Panel2: TPanel;
Panel4: TPanel;
Bevel1: TBevel;
pnlTitle: TPanel;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure pnlBottomResize(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);// AAN 07/01/2002
private
FPanelList: TList;
fGMV_Template: TGMV_TemplateVital;
protected
public
{ Public declarations }
FQIENS: string;
function QualifierNames: string;
function QualifierIENS: string;
procedure QualifierClicked(Sender: TObject);
procedure SetDefaultQualifier(aCategoryIEN,aQualifierIEN:String;aVType: TVitalType);
end;

function SelectQualifiers(VType: TVitalType; var Quals, QualsDisplay: string; Ctrl: TControl;aValue:String; aGMV_Template: TGMV_TemplateVital): Boolean;

implementation

uses uGMV_QualifyBox, uGMV_Common, uGMV_Engine, system.Types, uGMV_Utils
;

{$R *.DFM}

function SelectQualifiers(VType: TVitalType; var Quals, QualsDisplay: string; Ctrl: TControl;aValue:String; aGMV_Template: TGMV_TemplateVital): Boolean;
var
_QForm: TfrmGMV_Qualifiers;
QPanel: TGMV_TemplateQualifierBox;
i, j: integer;
pt: TPoint;
RetList, QualList: TStrings;
IsReq: Boolean;
LookupIEN: String;
begin
Result := False;
//Create the form
_QForm := TfrmGMV_Qualifiers.Create(Application);
with _QForm do
try
fGMV_Template := aGMV_Template;

//set the position relative to the button
pt := Ctrl.Parent.ClientToScreen(Point(Ctrl.Left, Ctrl.Top));
Left := pt.x;
Top := pt.y + Ctrl.Height;

//Get the categories
RetList := getCategoryQualifiers(GMVVitalTypeIEN[VType]);
try
QualList := TStringList.Create;
try
//Set up the qualifier list
QualList.Delimiter := ':';
QualList.DelimitedText := Quals;

//Set the title
_QForm.pnlTitle.Caption := piece(RetList.Strings[0],'^',2) + ' Qualifiers';

//Create the panels for each category (ignore the first return)
for i := 1 to RetList.Count - 1 do
begin
LookupIEN := aGMV_Template.IEN + '_' + piece(RetList[i], '^', 1);
IsReq := aGMV_Template.IsRequired[LookupIEN];
QPanel := TGMV_TemplateQualifierBox.CreateParented(_QForm,_QForm.sb, GMVVitalTypeIEN[VType], piece(RetList[i], '^', 1),'', IsReq);
QPanel.Top := QPanel.Height;
QPanel.Visible := True;
QPanel.OnClick := QualifierClicked;
QPanel.setPopupLayout;

//Look for the qualifiers
//Check if there is already a default set
if StrToIntDef(QPanel.DefaultQualifierIEN, 0) < 1 then
begin
//Loop through the list of Qualifiers and try to match
for J := (QualList.Count - 1) downto 0 do
begin
try
//Check if IEN is in the list
If QPanel.IENExist(QualList[J]) then
begin
QPanel.DefaultQualifierIEN := QualList[J];
QualList.Delete(J);
break;
end;
QPanel.OnQualClick(nil);
except
on E: Exception do
ShowMessage('Error assigning <'+QualList[J]+'> as the default qualifier'+#13#10+
E.Message);
end;
end;
end;

//Add the panel to our list
FPanelList.Add(QPanel);

end;
finally
QualList.Free;
end;
Finally
RetList.Free;
end;

edtQuals.Text := QualifierNames;
FQIENS := QualifierIENS;
PositionForm(_QForm);
ShowModal;
if ModalResult = mrOk then
begin
Quals := _QForm.FQIENS;
QualsDisplay := _QForm.edtQuals.Text;
Result := True;
end;
finally
free;
end;
end;


function TfrmGMV_Qualifiers.QualifierNames: string;
var
i: integer;
begin
Result := '';
for i := 0 to FPanelList.Count - 1 do
with TGMV_TemplateQualifierBox(FPanelList[i]) do
if StrToIntDef(DefaultQualifierIEN, 0) > 0 then
begin
if Result <> '' then
Result := Result + ', ';
Result := Result + DefaultQualifierName;
end;
end;

function TfrmGMV_Qualifiers.QualifierIENS: string;
var
i: integer;
begin
Result := '';
for i := 0 to FPanelList.Count - 1 do
if TGMV_TemplateQualifierBox(FPanelList[i]).DefaultQualifierIEN <> '' then
Result := Result + TGMV_TemplateQualifierBox(FPanelList[i]).CategoryIEN +','+ TGMV_TemplateQualifierBox(FPanelList[i]).DefaultQualifierIEN + '~' ;
i:= Length(Result);
if i > 0 then
Result := copy(Result,1,i-1);
{
with TGMV_TemplateQualifierBox(FPanelList[i]) do
begin
if Result = '' then
begin
if DefaultQualifierIEN <> '' then Result := DefaultQualifierIEN;
end
else
if DefaultQualifierIEN <> '' then Result := Result + ':' +DefaultQualifierIEN;
end;
}
end;

procedure TfrmGMV_Qualifiers.QualifierClicked(Sender: TObject);
begin
edtQuals.Text := QualifierNames;
FQIENS := QualifierIENS;
end;

procedure TfrmGMV_Qualifiers.FormCreate(Sender: TObject);
begin
FPanelList := TList.Create;
end;

procedure TfrmGMV_Qualifiers.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeAndNil(FPanelList);
end;

procedure TfrmGMV_Qualifiers.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
Const
aMsg = '%s required';
Var
I: integer;
LookupIEN: String;
aFmtMsg: TStringList;
aMsgStr: String;
begin
CanClose := True;
if ModalResult = mrOk then
begin
aFmtMsg := TStringlist.Create;
try
for i := 0 to FPanelList.Count - 1 do
begin
LookupIEN := fGMV_Template.IEN + '_' + TGMV_TemplateQualifierBox(FPanelList[i]).CategoryIEN;
if fGMV_Template.IsRequired[LookupIEN] then
begin
if TGMV_TemplateQualifierBox(FPanelList[i]).DefaultQualifierIEN = '' then
aFmtMsg.Add(TitleCase(GMVCats.Entries[GMVCats.IndexOfIEN(TGMV_TemplateQualifierBox(FPanelList[i]).CategoryIEN)]) );
end;
end;

if aFmtMsg.Count > 0 then
begin
for I := 0 to aFmtMsg.Count - 1 do
begin
if aFmtMsg.Count > 1 then
begin
If(I = aFmtMsg.Count - 1) then
aMsgStr := Trim(aMsgStr) + ' and '
else if I > 0 then
aMsgStr := Trim(aMsgStr) + ', ';
end;
aMsgStr := Trim(aMsgStr) + ' ' + aFmtMsg.Strings[i] + ' ';
end;
if aFmtMsg.Count = 1 then
aMsgStr := Trim(aMsgStr) + ' is'
else
aMsgStr := Trim(aMsgStr) + ' are';

ShowMessage(Format(aMsg, [aMsgStr]));
CanClose := False;
end;

finally
aFmtMsg.Free;
end;
end;
end;

procedure TfrmGMV_Qualifiers.pnlBottomResize(Sender: TObject);
begin
// edtQuals.Width := pnlBottom.Width - (edtQuals.left * 2);
// btnCancel.Left := pnlBottom.Width - btnCancel.Width - edtQuals.Left;
// btnOK.Left := btnCancel.Left - btnOk.Width - edtQuals.Left;
end;

// AAN 07/01/2002 -------------------------------------------------------- Begin
procedure TfrmGMV_Qualifiers.FormActivate(Sender: TObject);
Var
MaxW, MaxH: Integer;
begin
if Screen.MonitorCount = 1 then
begin
MaxH := Screen.WorkAreaHeight;
MaxW := Screen.WorkAreaWidth;
end else begin
MaxH := Screen.DesktopHeight;
MaxW := Screen.DesktopWidth;
end;

if (Left + Width) > MaxW then
Left := MaxW - Width;
if (Top + Height) > MaxH then
Top := MaxH - Height - pnlBottom.Height div 2;
end;
// AAN 07/01/2002 ---------------------------------------------------------- End

procedure TfrmGMV_Qualifiers.SetDefaultQualifier(aCategoryIEN,aQualifierIEN:String;aVType: TVitalType);
var
TQB: TGMV_TemplateQualifierBox;
i: Integer;
begin
for i := 0 to FPanelList.Count - 1 do
begin
TQB := TGMV_TemplateQualifierBox(FPanelList[i]);
if TQB.CategoryIEN = aCategoryIEN then
TQB.DefaultQualifierIEN := aQualifierIEN;
end;
end;

end.