| 1 | //kt -- Modified with SourceScanner on 8/8/2007
 | 
|---|
| 2 | unit fConsMedRslt;
 | 
|---|
| 3 | 
 | 
|---|
| 4 | interface
 | 
|---|
| 5 | 
 | 
|---|
| 6 | uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
 | 
|---|
| 7 |   Buttons, ORCtrls, ORfn, ExtCtrls, fAutoSz, ORDtTm, fConsultAlertTo, fRptBox,
 | 
|---|
| 8 |   DKLang;
 | 
|---|
| 9 | 
 | 
|---|
| 10 | type
 | 
|---|
| 11 |   TMedResultRec = record
 | 
|---|
| 12 |     Action: string;
 | 
|---|
| 13 |     ResultPtr: string;
 | 
|---|
| 14 |     DateTimeofAction: TFMDateTime;
 | 
|---|
| 15 |     ResponsiblePerson: Int64;
 | 
|---|
| 16 |     AlertsTo: TRecipientList;
 | 
|---|
| 17 |   end;
 | 
|---|
| 18 | 
 | 
|---|
| 19 |   TfrmConsMedRslt = class(TfrmAutoSz)
 | 
|---|
| 20 |     cmdOK: TButton;
 | 
|---|
| 21 |     cmdCancel: TButton;
 | 
|---|
| 22 |     lstMedResults: TORListBox;
 | 
|---|
| 23 |     SrcLabel: TLabel;
 | 
|---|
| 24 |     pnlBase: TORAutoPanel;
 | 
|---|
| 25 |     cmdDetails: TButton;
 | 
|---|
| 26 |     ckAlert: TCheckBox;
 | 
|---|
| 27 |     lblDateofAction: TOROffsetLabel;
 | 
|---|
| 28 |     calDateofAction: TORDateBox;
 | 
|---|
| 29 |     lblActionBy: TOROffsetLabel;
 | 
|---|
| 30 |     cboPerson: TORComboBox;
 | 
|---|
| 31 |     lblResultName: TOROffsetLabel;
 | 
|---|
| 32 |     lblResultDate: TOROffsetLabel;
 | 
|---|
| 33 |     lblSummary: TOROffsetLabel;
 | 
|---|
| 34 |     DKLanguageController1: TDKLanguageController;
 | 
|---|
| 35 |     procedure cmdOKClick(Sender: TObject);
 | 
|---|
| 36 |     procedure cmdCancelClick(Sender: TObject);
 | 
|---|
| 37 |     procedure cmdDetailsClick(Sender: TObject);
 | 
|---|
| 38 |     procedure ckAlertClick(Sender: TObject);
 | 
|---|
| 39 |     procedure NewPersonNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 40 |       Direction, InsertAt: Integer);
 | 
|---|
| 41 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
| 42 |     procedure lstMedResultsDrawItem(Control: TWinControl; Index: Integer;
 | 
|---|
| 43 |       Rect: TRect; State: TOwnerDrawState);
 | 
|---|
| 44 |   protected
 | 
|---|
| 45 |     procedure ShowDetailsDestroyed(Sender: TObject);
 | 
|---|
| 46 |   private
 | 
|---|
| 47 |     FShowDetails: TfrmReportBox;
 | 
|---|
| 48 |     FOldShowDetailsOnDestroy: TNotifyEvent;
 | 
|---|
| 49 |     FMedResult: TMedResultRec ;
 | 
|---|
| 50 |     FChanged: Boolean;
 | 
|---|
| 51 |   end;
 | 
|---|
| 52 | 
 | 
|---|
| 53 | function SelectMedicineResult(ConsultIEN: integer; FormTitle: string; var MedResult: TMedResultRec): boolean ;
 | 
|---|
| 54 | 
 | 
|---|
| 55 | implementation
 | 
|---|
| 56 | 
 | 
|---|
| 57 | {$R *.DFM}
 | 
|---|
| 58 | 
 | 
|---|
| 59 | uses rConsults, rCore, uCore, uConst;
 | 
|---|
| 60 | 
 | 
|---|
| 61 | //const
 | 
|---|
| 62 | //TX_MEDRSLT_TEXT = 'Select medicine result or press Cancel.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 63 | //TX_MEDRSLT_CAP  = 'No Result Selected';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 64 | 
 | 
|---|
| 65 | var
 | 
|---|
| 66 |     TX_MEDRSLT_TEXT  : string;  //kt
 | 
|---|
| 67 |     TX_MEDRSLT_CAP   : string;  //kt
 | 
|---|
| 68 | 
 | 
|---|
| 69 | 
 | 
|---|
| 70 | procedure SetupVars;
 | 
|---|
| 71 | //kt Added entire function to replace constant declarations 8/8/2007
 | 
|---|
| 72 | begin
 | 
|---|
| 73 |   TX_MEDRSLT_TEXT := DKLangConstW('fConsMedRslt_Select_medicine_result_or_press_Cancelx');
 | 
|---|
| 74 |   TX_MEDRSLT_CAP  := DKLangConstW('fConsMedRslt_No_Result_Selected');
 | 
|---|
| 75 | end;
 | 
|---|
| 76 |  
 | 
|---|
| 77 | var
 | 
|---|
| 78 |   RecipientList: TRecipientList ;
 | 
|---|
| 79 | 
 | 
|---|
| 80 | function SelectMedicineResult(ConsultIEN: integer; FormTitle: string; var MedResult: TMedResultRec): boolean ;
 | 
|---|
| 81 | { displays Medicine Result selection form and returns a record of the selection }
 | 
|---|
| 82 | var
 | 
|---|
| 83 |   frmConsMedRslt: TfrmConsMedRslt;
 | 
|---|
| 84 | begin
 | 
|---|
| 85 |   frmConsMedRslt := TfrmConsMedRslt.Create(Application);
 | 
|---|
| 86 |   try
 | 
|---|
| 87 |     with frmConsMedRslt do
 | 
|---|
| 88 |     begin
 | 
|---|
| 89 |       FChanged := False;
 | 
|---|
| 90 |       FillChar(RecipientList, SizeOf(RecipientList), 0);
 | 
|---|
| 91 |       FillChar(FMedResult, SizeOf(FMedResult), 0);
 | 
|---|
| 92 |       Caption := FormTitle;
 | 
|---|
| 93 |       cboPerson.InitLongList(User.Name);
 | 
|---|
| 94 |       cboPerson.SelectByIEN(User.DUZ);
 | 
|---|
| 95 |       ResizeFormToFont(TForm(frmConsMedRslt));
 | 
|---|
| 96 | 
 | 
|---|
| 97 |       if MedResult.Action = 'ATTACH' then
 | 
|---|
| 98 |         begin
 | 
|---|
| 99 |           lstMedResults.Items.Assign(GetAssignableMedResults(ConsultIEN));
 | 
|---|
| 100 |           ckAlert.Visible := True;
 | 
|---|
| 101 |         end
 | 
|---|
| 102 |       else if MedResult.Action = 'REMOVE' then
 | 
|---|
| 103 |         begin
 | 
|---|
| 104 |           lstMedResults.Items.Assign(GetRemovableMedResults(ConsultIEN));
 | 
|---|
| 105 |           ckAlert.Visible := False;
 | 
|---|
| 106 |         end;
 | 
|---|
| 107 |       if lstMedResults.Items.Count > 0 then
 | 
|---|
| 108 |         ShowModal
 | 
|---|
| 109 |       else
 | 
|---|
| 110 |         FChanged := True;
 | 
|---|
| 111 |       Result := FChanged;
 | 
|---|
| 112 |       MedResult := FMedResult;
 | 
|---|
| 113 |     end; {with frmODConsMedRslt}
 | 
|---|
| 114 |   finally
 | 
|---|
| 115 |     frmConsMedRslt.Release;
 | 
|---|
| 116 |   end;
 | 
|---|
| 117 | end;
 | 
|---|
| 118 | 
 | 
|---|
| 119 | procedure TfrmConsMedRslt.cmdCancelClick(Sender: TObject);
 | 
|---|
| 120 | begin
 | 
|---|
| 121 |   FillChar(FMedResult, SizeOf(FMedResult), 0);
 | 
|---|
| 122 |   FChanged := False;
 | 
|---|
| 123 |   Close;
 | 
|---|
| 124 | end;
 | 
|---|
| 125 | 
 | 
|---|
| 126 | procedure TfrmConsMedRslt.cmdOKClick(Sender: TObject);
 | 
|---|
| 127 | begin
 | 
|---|
| 128 |   SetupVars;  //kt added 8/8/2007 to replace constants with vars.
 | 
|---|
| 129 |   FillChar(FMedResult, SizeOf(FMedResult), 0);
 | 
|---|
| 130 |   if lstMedResults.ItemIndex = -1 then
 | 
|---|
| 131 |   begin
 | 
|---|
| 132 |     InfoBox(TX_MEDRSLT_TEXT, TX_MEDRSLT_CAP, MB_OK or MB_ICONWARNING);
 | 
|---|
| 133 |     FChanged := False ;
 | 
|---|
| 134 |     Exit;
 | 
|---|
| 135 |   end;
 | 
|---|
| 136 |   FChanged := True;
 | 
|---|
| 137 |   with FMedResult do
 | 
|---|
| 138 |     begin
 | 
|---|
| 139 |       ResultPtr := lstMedResults.ItemID ;
 | 
|---|
| 140 |       DateTimeofAction := calDateOfAction.FMDateTime;
 | 
|---|
| 141 |       ResponsiblePerson := cboPerson.ItemIEN;
 | 
|---|
| 142 |       AlertsTo := RecipientList;
 | 
|---|
| 143 |     end;
 | 
|---|
| 144 |   Close;
 | 
|---|
| 145 | end;
 | 
|---|
| 146 | 
 | 
|---|
| 147 | procedure TfrmConsMedRslt.cmdDetailsClick(Sender: TObject);
 | 
|---|
| 148 | //const
 | 
|---|
| 149 | //TX_RESULTS_CAP = 'Detailed Results Display';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 150 | var
 | 
|---|
| 151 |   x: string;
 | 
|---|
| 152 |   TX_RESULTS_CAP : string; //kt
 | 
|---|
| 153 | begin
 | 
|---|
| 154 |   inherited;
 | 
|---|
| 155 |   TX_RESULTS_CAP := DKLangConstW('fConsMedRslt_Detailed_Results_Display'); //kt added 8/8/2007
 | 
|---|
| 156 |   if lstMedResults.ItemIndex = -1 then exit;
 | 
|---|
| 157 |   x := Piece(Piece(Piece(lstMedResults.ItemID, ';', 2), '(', 2), ',', 1) + ';' + Piece(lstMedResults.ItemID, ';', 1);
 | 
|---|
| 158 |   NotifyOtherApps(NAE_REPORT, 'MED^' + x);
 | 
|---|
| 159 |   if(not assigned(FShowDetails)) then
 | 
|---|
| 160 |   begin
 | 
|---|
| 161 |     FShowDetails := ModelessReportBox(GetDetailedMedicineResults(lstMedResults.ItemID), TX_RESULTS_CAP, True);
 | 
|---|
| 162 |     FOldShowDetailsOnDestroy := FShowDetails.OnDestroy;
 | 
|---|
| 163 |     FShowDetails.OnDestroy := ShowDetailsDestroyed;
 | 
|---|
| 164 |     cmdDetails.Enabled := (not assigned(FShowDetails));
 | 
|---|
| 165 |     lstMedResults.Enabled := (not assigned(FShowDetails));
 | 
|---|
| 166 |   end;
 | 
|---|
| 167 | end;
 | 
|---|
| 168 | 
 | 
|---|
| 169 | procedure TfrmConsMedRslt.ShowDetailsDestroyed(Sender: TObject);
 | 
|---|
| 170 | begin
 | 
|---|
| 171 |   if(assigned(FOldShowDetailsOnDestroy)) then
 | 
|---|
| 172 |     FOldShowDetailsOnDestroy(Sender);
 | 
|---|
| 173 |   FShowDetails := nil;
 | 
|---|
| 174 |   cmdDetails.Enabled := (not assigned(FShowDetails));
 | 
|---|
| 175 |   lstMedResults.Enabled := (not assigned(FShowDetails));
 | 
|---|
| 176 | end;
 | 
|---|
| 177 | 
 | 
|---|
| 178 | 
 | 
|---|
| 179 | procedure TfrmConsMedRslt.ckAlertClick(Sender: TObject);
 | 
|---|
| 180 | begin
 | 
|---|
| 181 |   FillChar(RecipientList, SizeOf(RecipientList), 0);
 | 
|---|
| 182 |   if ckAlert.Checked then SelectRecipients(Font.Size, 0, RecipientList) ;
 | 
|---|
| 183 | end;
 | 
|---|
| 184 | 
 | 
|---|
| 185 | procedure TfrmConsMedRslt.NewPersonNeedData(Sender: TObject; const StartFrom: string;
 | 
|---|
| 186 |   Direction, InsertAt: Integer);
 | 
|---|
| 187 | begin
 | 
|---|
| 188 |   inherited;
 | 
|---|
| 189 |   (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
 | 
|---|
| 190 | end;
 | 
|---|
| 191 | 
 | 
|---|
| 192 | procedure TfrmConsMedRslt.FormDestroy(Sender: TObject);
 | 
|---|
| 193 | begin
 | 
|---|
| 194 |   inherited;
 | 
|---|
| 195 |   KillObj(@FShowDetails);
 | 
|---|
| 196 | end;
 | 
|---|
| 197 | 
 | 
|---|
| 198 | procedure TfrmConsMedRslt.lstMedResultsDrawItem(Control: TWinControl;
 | 
|---|
| 199 |   Index: Integer; Rect: TRect; State: TOwnerDrawState);
 | 
|---|
| 200 | var
 | 
|---|
| 201 |   x: string;
 | 
|---|
| 202 |   AnImage: TBitMap;
 | 
|---|
| 203 | const
 | 
|---|
| 204 |   STD_PROC_TEXT = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
 | 
|---|
| 205 |   STD_DATE = 'MMM DD,YY@HH:NNXX';
 | 
|---|
| 206 | begin
 | 
|---|
| 207 |   inherited;
 | 
|---|
| 208 |   AnImage := TBitMap.Create;
 | 
|---|
| 209 |   try
 | 
|---|
| 210 |     with (Control as TORListBox).Canvas do  { draw on control canvas, not on the form }
 | 
|---|
| 211 |       begin
 | 
|---|
| 212 |         x := (Control as TORListBox).Items[Index];
 | 
|---|
| 213 |         FillRect(Rect);       { clear the rectangle }
 | 
|---|
| 214 |         AnImage.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_1');
 | 
|---|
| 215 |         (Control as TORListBox).ItemHeight := HigherOf(TextHeight(x), AnImage.Height);
 | 
|---|
| 216 |         if StrToIntDef(Piece(x, U, 5), 0) > 0 then
 | 
|---|
| 217 |           begin
 | 
|---|
| 218 |             BrushCopy(Bounds(Rect.Left, Rect.Top, AnImage.Width, AnImage.Height),
 | 
|---|
| 219 |               AnImage, Bounds(0, 0, AnImage.Width, AnImage.Height), clRed); {render ImageFlag}
 | 
|---|
| 220 |           end;
 | 
|---|
| 221 |         TextOut(Rect.Left + AnImage.Width, Rect.Top, Piece(x, U, 2));
 | 
|---|
| 222 |         TextOut(Rect.Left + AnImage.Width + TextWidth(STD_PROC_TEXT), Rect.Top, Piece(x, U, 3));
 | 
|---|
| 223 |         TextOut(Rect.Left + AnImage.Width + TextWidth(STD_PROC_TEXT) + TextWidth(STD_DATE), Rect.Top, Piece(x, U, 4));
 | 
|---|
| 224 |       end;
 | 
|---|
| 225 |   finally
 | 
|---|
| 226 |     AnImage.Free;
 | 
|---|
| 227 |   end;
 | 
|---|
| 228 | end;
 | 
|---|
| 229 | 
 | 
|---|
| 230 | end.
 | 
|---|