| [459] | 1 | unit fODAllgy;
 | 
|---|
 | 2 | {$O-}
 | 
|---|
 | 3 | interface
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | uses
 | 
|---|
 | 6 |   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
 | 
|---|
 | 7 |   Forms, Dialogs, StdCtrls, ORCtrls, ORfn, fODBase, ExtCtrls, ComCtrls, uConst,
 | 
|---|
 | 8 |   Menus, ORDtTm, Buttons;
 | 
|---|
 | 9 | 
 | 
|---|
 | 10 | type
 | 
|---|
 | 11 |   TfrmODAllergy = class(TfrmODBase)
 | 
|---|
 | 12 |     btnAgent: TSpeedButton;
 | 
|---|
 | 13 |     cboReactionType: TORComboBox;
 | 
|---|
 | 14 |     lblReactionType: TOROffsetLabel;
 | 
|---|
 | 15 |     lblAgent: TOROffsetLabel;
 | 
|---|
 | 16 |     lblSymptoms: TOROffsetLabel;
 | 
|---|
 | 17 |     lblSelectedSymptoms: TOROffsetLabel;
 | 
|---|
 | 18 |     grpObsHist: TRadioGroup;
 | 
|---|
 | 19 |     memComments: TRichEdit;
 | 
|---|
 | 20 |     lblComments: TOROffsetLabel;
 | 
|---|
 | 21 |     lstSelectedSymptoms: TORListBox;
 | 
|---|
 | 22 |     ckNoKnownAllergies: TCheckBox;
 | 
|---|
 | 23 |     cboOriginator: TORComboBox;
 | 
|---|
 | 24 |     lblOriginator: TOROffsetLabel;
 | 
|---|
 | 25 |     Bevel1: TBevel;
 | 
|---|
 | 26 |     lstAllergy: TORListBox;
 | 
|---|
 | 27 |     cboSymptoms: TORComboBox;
 | 
|---|
 | 28 |     dlgReactionDateTime: TORDateTimeDlg;
 | 
|---|
 | 29 |     btnCurrent: TButton;
 | 
|---|
 | 30 |     lblObservedDate: TOROffsetLabel;
 | 
|---|
 | 31 |     calObservedDate: TORDateBox;
 | 
|---|
 | 32 |     lblSeverity: TOROffsetLabel;
 | 
|---|
 | 33 |     cboSeverity: TORComboBox;
 | 
|---|
 | 34 |     btnRemove: TButton;
 | 
|---|
 | 35 |     btnDateTime: TButton;
 | 
|---|
 | 36 |     procedure btnAgentClick(Sender: TObject);
 | 
|---|
 | 37 |     procedure FormCreate(Sender: TObject);
 | 
|---|
 | 38 |     procedure cboOriginatorNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 39 |       Direction, InsertAt: Integer);
 | 
|---|
 | 40 |     procedure cboSymptomsNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 41 |       Direction, InsertAt: Integer);
 | 
|---|
 | 42 |     procedure lstAllergySelect(Sender: TObject);
 | 
|---|
 | 43 |     procedure grpObsHistClick(Sender: TObject);
 | 
|---|
 | 44 |     procedure ControlChange(Sender: TObject);
 | 
|---|
 | 45 |     procedure memCommentsExit(Sender: TObject);
 | 
|---|
 | 46 |     procedure cboSymptomsClick(Sender: TObject);
 | 
|---|
 | 47 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
 | 48 |     procedure ckNoKnownAllergiesClick(Sender: TObject);
 | 
|---|
 | 49 |     procedure EnableControls;
 | 
|---|
 | 50 |     procedure DisableControls;
 | 
|---|
 | 51 |     procedure cmdAcceptClick(Sender: TObject);
 | 
|---|
 | 52 |     procedure btnCurrentClick(Sender: TObject);
 | 
|---|
 | 53 |     procedure btnRemoveClick(Sender: TObject);
 | 
|---|
 | 54 |     procedure lstAllergyClick(Sender: TObject);
 | 
|---|
 | 55 |     procedure btnDateTimeClick(Sender: TObject);
 | 
|---|
 | 56 |     procedure cboSymptomsKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
 | 57 |       Shift: TShiftState);
 | 
|---|
 | 58 |     procedure cboSymptomsMouseClick(Sender: TObject);
 | 
|---|
 | 59 |     procedure memCommentsKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
 | 60 |       Shift: TShiftState);
 | 
|---|
 | 61 |   private
 | 
|---|
 | 62 |     FLastAllergyID: string;
 | 
|---|
 | 63 |     FNKAOrder: boolean;
 | 
|---|
 | 64 |   protected
 | 
|---|
 | 65 |     procedure InitDialog; override;
 | 
|---|
 | 66 |     procedure Validate(var AnErrMsg: string); override;
 | 
|---|
 | 67 |   public
 | 
|---|
 | 68 |     procedure SetupDialog(OrderAction: Integer; const ID: string); override;
 | 
|---|
 | 69 |   end;
 | 
|---|
 | 70 | 
 | 
|---|
 | 71 | var
 | 
|---|
 | 72 |   frmODAllergy: TfrmODAllergy;
 | 
|---|
 | 73 |   AllergyList: TStringList;
 | 
|---|
 | 74 | 
 | 
|---|
 | 75 | implementation
 | 
|---|
 | 76 | 
 | 
|---|
 | 77 | {$R *.DFM}
 | 
|---|
 | 78 | 
 | 
|---|
 | 79 | uses
 | 
|---|
 | 80 |     rODBase, uCore, rCore, rCover, rODAllergy, fAllgyFind, fPtCWAD;
 | 
|---|
 | 81 | 
 | 
|---|
 | 82 | const
 | 
|---|
 | 83 |   TX_NO_ALLERGY       = 'An allergy must be specified.'    ;
 | 
|---|
 | 84 |   TX_NO_REACTION      = 'A reaction type must be entered for this allergy.'  ;
 | 
|---|
 | 85 |   TX_NO_SYMPTOMS      = 'Symptoms must be selected for this observed allergy and reaction.';
 | 
|---|
 | 86 |   TX_NO_OBSERVER      = 'An observer must be selected for this allergy and reaction .';
 | 
|---|
 | 87 |   TX_NO_FUTURE_DATES  = 'Dates in the future are not allowed.';
 | 
|---|
 | 88 |   TX_BAD_DATE         = 'Dates must be in the format m/d/y or m/y or y, or T-d.';
 | 
|---|
 | 89 |   TX_CAP_FUTURE       = 'Invalid date';
 | 
|---|
 | 90 | 
 | 
|---|
 | 91 | procedure TfrmODAllergy.FormCreate(Sender: TObject);
 | 
|---|
 | 92 | begin
 | 
|---|
 | 93 |   inherited;
 | 
|---|
 | 94 |   AllergyList := TStringList.Create;
 | 
|---|
 | 95 |   AllowQuickOrder := False;
 | 
|---|
 | 96 |   FillerID := 'GMRD';                     // does 'on Display' order check **KCM**
 | 
|---|
 | 97 |   StatusText('Loading Dialog Definition');
 | 
|---|
 | 98 |   Responses.Dialog := 'GMRAOR ALLERGY ENTER/EDIT';   // loads formatting info
 | 
|---|
 | 99 |   StatusText('Loading Default Values');
 | 
|---|
 | 100 |   CtrlInits.LoadDefaults(ODForAllergies);  // returns TStrings with defaults
 | 
|---|
 | 101 |   StatusText('Initializing Long List');
 | 
|---|
 | 102 |   CtrlInits.SetControl(cboSymptoms, 'Top Ten');
 | 
|---|
 | 103 |   cboSymptoms.InsertSeparator;
 | 
|---|
 | 104 |   cboOriginator.InitLongList(User.Name) ;
 | 
|---|
 | 105 |   cboOriginator.SelectByIEN(User.DUZ);
 | 
|---|
 | 106 |   PreserveControl(cboSymptoms);
 | 
|---|
 | 107 |   PreserveControl(cboOriginator);
 | 
|---|
 | 108 |   InitDialog;
 | 
|---|
 | 109 |   btnAgentClick(Self);
 | 
|---|
 | 110 | end;
 | 
|---|
 | 111 | 
 | 
|---|
 | 112 | procedure TfrmODAllergy.InitDialog;
 | 
|---|
 | 113 | begin
 | 
|---|
 | 114 |   inherited;
 | 
|---|
 | 115 |   Changing := True;
 | 
|---|
 | 116 |   with CtrlInits do
 | 
|---|
 | 117 |     begin
 | 
|---|
 | 118 |       SetControl(cboReactionType, 'Reactions');
 | 
|---|
 | 119 |       SetControl(cboSeverity, 'Severity');
 | 
|---|
 | 120 |     end;
 | 
|---|
 | 121 |   lstAllergy.Items.Add('-1^Click button to search ---->');
 | 
|---|
 | 122 |   grpObsHist.ItemIndex := 1;
 | 
|---|
 | 123 |   calObservedDate.Text := ''; //FMDateTime := FMNow;
 | 
|---|
 | 124 |   cboSeverity.ItemIndex := -1;
 | 
|---|
 | 125 |   cboSymptoms.ItemIndex := -1;
 | 
|---|
 | 126 |   memComments.Clear;
 | 
|---|
 | 127 |   ListAllergies(AllergyList);
 | 
|---|
 | 128 |   with AllergyList do
 | 
|---|
 | 129 |     if Count > 0 then
 | 
|---|
 | 130 |       begin
 | 
|---|
 | 131 |         if Piece(Strings[0], U, 1) = '' then
 | 
|---|
 | 132 |           ckNoKnownAllergies.Enabled := True
 | 
|---|
 | 133 |         else
 | 
|---|
 | 134 |           ckNoKnownAllergies.Enabled := False;
 | 
|---|
 | 135 |       end
 | 
|---|
 | 136 |     else
 | 
|---|
 | 137 |       ckNoKnownAllergies.Enabled := True;
 | 
|---|
 | 138 |   StatusText('');
 | 
|---|
 | 139 |   memOrder.Clear ;
 | 
|---|
 | 140 |   Changing := False;
 | 
|---|
 | 141 | end;
 | 
|---|
 | 142 | 
 | 
|---|
 | 143 | procedure TfrmODAllergy.SetupDialog(OrderAction: Integer; const ID: string);
 | 
|---|
 | 144 | begin
 | 
|---|
 | 145 |   inherited;
 | 
|---|
 | 146 |   if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
 | 
|---|
 | 147 |   begin
 | 
|---|
 | 148 |     SetControl(lstAllergy,          'ITEM',   1);
 | 
|---|
 | 149 |     lstAllergySelect(Self);
 | 
|---|
 | 150 |     Changing := True;
 | 
|---|
 | 151 |     SetControl(cboReactionType,     'TYPE',     1);
 | 
|---|
 | 152 |     SetControl(lstSelectedSymptoms, 'REACTION',     1);     // need dates concatenated  - see cboSymptomsClick
 | 
|---|
 | 153 |     SetControl(grpObsHist,          'OBSERVED',     1);
 | 
|---|
 | 154 |     SetControl(calObservedDate,     'START',     1);
 | 
|---|
 | 155 |     SetControl(cboSeverity,         'SEVERITY',     1);
 | 
|---|
 | 156 |     SetControl(memComments,         'COMMENT',   1);
 | 
|---|
 | 157 |     SetControl(ckNoKnownAllergies,  'NKA',       1);
 | 
|---|
 | 158 |     SetControl(cboOriginator,       'PROVIDER',  1);
 | 
|---|
 | 159 |     Changing := False;
 | 
|---|
 | 160 |     ControlChange(Self);
 | 
|---|
 | 161 |   end;
 | 
|---|
 | 162 | end;
 | 
|---|
 | 163 | 
 | 
|---|
 | 164 | procedure TfrmODAllergy.Validate(var AnErrMsg: string);
 | 
|---|
 | 165 | var
 | 
|---|
 | 166 |   tmpDate: TFMDateTime;
 | 
|---|
 | 167 | const
 | 
|---|
 | 168 |   TX_NO_LOCATION = 'A location must be identified.' + CRLF +
 | 
|---|
 | 169 |                    '(Select File | Update Provider/Location)';
 | 
|---|
 | 170 |   TX_NO_PROVIDER = 'A provider who is authorized to write orders must be indentified.' + CRLF +
 | 
|---|
 | 171 |                    '(Select File | Update Provider/Location)';
 | 
|---|
 | 172 | 
 | 
|---|
 | 173 |   procedure SetError(const x: string);
 | 
|---|
 | 174 |   begin
 | 
|---|
 | 175 |     if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
 | 
|---|
 | 176 |     AnErrMsg := AnErrMsg + x;
 | 
|---|
 | 177 |   end;
 | 
|---|
 | 178 | 
 | 
|---|
 | 179 | begin
 | 
|---|
 | 180 | //  inherited;    v14a -  do not reject past dates - historical would not be allowed
 | 
|---|
 | 181 |   AnErrMsg := '';
 | 
|---|
 | 182 |   if User.NoOrdering then AnErrMsg := 'Ordering has been disabled.  Press Quit.';
 | 
|---|
 | 183 |   if not ckNoKnownAllergies.Checked then
 | 
|---|
 | 184 |     begin
 | 
|---|
 | 185 |       if lstAllergy.Items.Count = 0 then SetError(TX_NO_ALLERGY)
 | 
|---|
 | 186 |       else if (Length(lstAllergy.DisplayText[0]) = 0) or
 | 
|---|
 | 187 |          (Piece(lstAllergy.Items[0], U, 1) = '-1') then SetError(TX_NO_ALLERGY);
 | 
|---|
 | 188 |       if (grpObsHist.ItemIndex = 0) and (lstSelectedSymptoms.Items.Count = 0)   then SetError(TX_NO_SYMPTOMS);
 | 
|---|
 | 189 |       if cboReactionType.ItemID = '' then
 | 
|---|
 | 190 |         SetError(TX_NO_REACTION)
 | 
|---|
 | 191 |       else
 | 
|---|
 | 192 |         Responses.Update('TYPE', 1, cboReactionType.ItemID, cboReactionType.Text);
 | 
|---|
 | 193 |     end;
 | 
|---|
 | 194 |   if cboOriginator.ItemIEN = 0             then SetError(TX_NO_OBSERVER);
 | 
|---|
 | 195 |   if calObservedDate.Text <> '' then
 | 
|---|
 | 196 |     begin
 | 
|---|
 | 197 |       tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');
 | 
|---|
 | 198 |       if tmpDate > FMNow then  SetError(TX_NO_FUTURE_DATES);
 | 
|---|
 | 199 |       if tmpDate < 0 then SetError(TX_BAD_DATE);
 | 
|---|
 | 200 |     end;
 | 
|---|
 | 201 |   if (Encounter.Location = 0) and not(Self.EvtID>0) then AnErrMsg := TX_NO_LOCATION;
 | 
|---|
 | 202 |   if (Encounter.Provider = 0) or (PersonHasKey(Encounter.Provider, 'PROVIDER') = False)
 | 
|---|
 | 203 |     then AnErrMsg := TX_NO_PROVIDER;
 | 
|---|
 | 204 | end;
 | 
|---|
 | 205 | 
 | 
|---|
 | 206 | procedure TfrmODAllergy.cboOriginatorNeedData(Sender: TObject;
 | 
|---|
 | 207 |   const StartFrom: string; Direction, InsertAt: Integer);
 | 
|---|
 | 208 | begin
 | 
|---|
 | 209 |   inherited;
 | 
|---|
 | 210 |   cboOriginator.ForDataUse(SubSetOfPersons(StartFrom, Direction));
 | 
|---|
 | 211 | end;
 | 
|---|
 | 212 | 
 | 
|---|
 | 213 | procedure TfrmODAllergy.cboSymptomsNeedData(Sender: TObject;
 | 
|---|
 | 214 |   const StartFrom: string; Direction, InsertAt: Integer);
 | 
|---|
 | 215 | begin
 | 
|---|
 | 216 |   inherited;
 | 
|---|
 | 217 |   cboSymptoms.ForDataUse(SubSetOfSymptoms(StartFrom, Direction));
 | 
|---|
 | 218 | end;
 | 
|---|
 | 219 | 
 | 
|---|
 | 220 | procedure TfrmODAllergy.grpObsHistClick(Sender: TObject);
 | 
|---|
 | 221 | begin
 | 
|---|
 | 222 |   inherited;
 | 
|---|
 | 223 |   Changing := True;
 | 
|---|
 | 224 |   cboSeverity.ItemIndex := -1;
 | 
|---|
 | 225 |   case grpObsHist.ItemIndex of
 | 
|---|
 | 226 |     0:  begin
 | 
|---|
 | 227 |           cboSeverity.Visible := True;
 | 
|---|
 | 228 |           lblSeverity.Visible := True;
 | 
|---|
 | 229 |         end;
 | 
|---|
 | 230 |     1:  begin
 | 
|---|
 | 231 |           cboSeverity.Visible := False;
 | 
|---|
 | 232 |           lblSeverity.Visible := False;
 | 
|---|
 | 233 |         end;
 | 
|---|
 | 234 |   end;
 | 
|---|
 | 235 |   Changing := False;
 | 
|---|
 | 236 |   ControlChange(Self);
 | 
|---|
 | 237 | end;
 | 
|---|
 | 238 | 
 | 
|---|
 | 239 | procedure TfrmODAllergy.ControlChange(Sender: TObject);
 | 
|---|
 | 240 | var
 | 
|---|
 | 241 |   i: integer;
 | 
|---|
 | 242 |   tmpDate: TFMDateTime;
 | 
|---|
 | 243 | begin
 | 
|---|
 | 244 |   inherited;
 | 
|---|
 | 245 |   if Changing then Exit;
 | 
|---|
 | 246 |   Responses.Clear;
 | 
|---|
 | 247 |   if ckNoKnownAllergies.Checked then
 | 
|---|
 | 248 |     begin
 | 
|---|
 | 249 |       Responses.Update('NKA',       1, 'NKA', 'No Known Allergies');
 | 
|---|
 | 250 |       with cboOriginator       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
 | 
|---|
 | 251 |     end
 | 
|---|
 | 252 |   else
 | 
|---|
 | 253 |     with lstAllergy          do
 | 
|---|
 | 254 |       if (Items.Count > 0) then
 | 
|---|
 | 255 |         if (Piece(Items[0], U, 1) <>  '-1') and (Length(DisplayText[0]) > 0) then
 | 
|---|
 | 256 |           begin
 | 
|---|
 | 257 |             Responses.Update('ITEM', 1, DisplayText[0], DisplayText[0]);
 | 
|---|
 | 258 |             with cboReactionType     do if ItemID     <> '' then Responses.Update('TYPE', 1, ItemID, Text);
 | 
|---|
 | 259 |             with lstSelectedSymptoms do for i := 0 to Items.Count - 1 do
 | 
|---|
 | 260 |               begin
 | 
|---|
 | 261 |                 Responses.Update('REACTION', i+1, Piece(Items[i],U,1), Piece(Items[i],U,2));
 | 
|---|
 | 262 |                 Responses.Update('REACTDT',  i+1, Piece(Items[i],U,3), Piece(Items[i],U,4));
 | 
|---|
 | 263 |               end;
 | 
|---|
 | 264 |             with grpObsHist          do if ItemIndex   > -1 then
 | 
|---|
 | 265 |                                         if ItemIndex = 0    then Responses.Update('OBSERVED',     1, 'o', 'Observed')
 | 
|---|
 | 266 |                                         else                     Responses.Update('OBSERVED',     1, 'h', 'Historical');
 | 
|---|
 | 267 |             with calObservedDate do
 | 
|---|
 | 268 |               begin
 | 
|---|
 | 269 |                 tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');
 | 
|---|
 | 270 |                 if tmpDate   > 0 then Responses.Update('START',     1, FloatToStr(tmpDate), Text);
 | 
|---|
 | 271 |               end;
 | 
|---|
 | 272 |             with cboSeverity         do if ItemID     <> '' then Responses.Update('SEVERITY',     1, ItemID, Text);
 | 
|---|
 | 273 |             with cboOriginator       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
 | 
|---|
 | 274 |             with memComments         do if GetTextLen   > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
 | 
|---|
 | 275 |           end;
 | 
|---|
 | 276 |   memOrder.Text := Responses.OrderText;
 | 
|---|
 | 277 | end;
 | 
|---|
 | 278 | 
 | 
|---|
 | 279 | procedure TfrmODAllergy.lstAllergySelect(Sender: TObject);
 | 
|---|
 | 280 | begin
 | 
|---|
 | 281 |   inherited;
 | 
|---|
 | 282 |   with lstAllergy do
 | 
|---|
 | 283 |     begin
 | 
|---|
 | 284 |       if Items.Count = 0 then
 | 
|---|
 | 285 |         Exit
 | 
|---|
 | 286 |       else if Piece(Items[0], U, 1) = '-1' then
 | 
|---|
 | 287 |         Exit;
 | 
|---|
 | 288 |       if Piece(Items[0], U, 1) <> FLastAllergyID then FLastAllergyID := Piece(Items[0], U, 1) else Exit;
 | 
|---|
 | 289 |       Changing := True;
 | 
|---|
 | 290 |       if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
 | 
|---|
 | 291 |       Changing := False;
 | 
|---|
 | 292 |       if CharAt(Piece(Items[0], U, 1), 1) = 'Q' then
 | 
|---|
 | 293 |         begin
 | 
|---|
 | 294 |           Responses.QuickOrder := ExtractInteger(Piece(Items[0], U, 1));
 | 
|---|
 | 295 |           Responses.SetControl(lstAllergy, 'ITEM', 1);
 | 
|---|
 | 296 |           FLastAllergyID := Piece(Items[0], U, 1);
 | 
|---|
 | 297 |         end;
 | 
|---|
 | 298 |     end;
 | 
|---|
 | 299 |   with Responses do if QuickOrder > 0 then
 | 
|---|
 | 300 |     begin
 | 
|---|
 | 301 |     SetControl(lstAllergy,          'ITEM',   1);
 | 
|---|
 | 302 |     lstAllergySelect(Self);
 | 
|---|
 | 303 |     Changing := True;
 | 
|---|
 | 304 |     SetControl(cboReactionType,     'TYPE',     1);
 | 
|---|
 | 305 |     SetControl(lstSelectedSymptoms, 'REACTION',     1);
 | 
|---|
 | 306 |     SetControl(grpObsHist,          'OBSERVED',     1);
 | 
|---|
 | 307 |     SetControl(calObservedDate,     'START',     1);
 | 
|---|
 | 308 |     SetControl(cboSeverity,         'SEVERITY',     1);
 | 
|---|
 | 309 |     SetControl(memComments,         'COMMENT',   1);
 | 
|---|
 | 310 |     SetControl(ckNoKnownAllergies,  'NKA',       1);
 | 
|---|
 | 311 |     SetControl(cboOriginator,       'PROVIDER',  1);
 | 
|---|
 | 312 |     end;
 | 
|---|
 | 313 |   ControlChange(Self) ;
 | 
|---|
 | 314 | end;
 | 
|---|
 | 315 | 
 | 
|---|
 | 316 | procedure TfrmODAllergy.memCommentsExit(Sender: TObject);
 | 
|---|
 | 317 | var
 | 
|---|
 | 318 |   AStringList: TStringList;
 | 
|---|
 | 319 | begin
 | 
|---|
 | 320 |   inherited;
 | 
|---|
 | 321 |   AStringList := TStringList.Create;
 | 
|---|
 | 322 |   try
 | 
|---|
 | 323 |     AStringList.Assign(memComments.Lines);
 | 
|---|
 | 324 |     LimitStringLength(AStringList, 74);
 | 
|---|
 | 325 |     memComments.Lines.Assign(AstringList);
 | 
|---|
 | 326 |     ControlChange(Self);
 | 
|---|
 | 327 |   finally
 | 
|---|
 | 328 |     AStringList.Free;
 | 
|---|
 | 329 |   end;
 | 
|---|
 | 330 | end;
 | 
|---|
 | 331 | 
 | 
|---|
 | 332 | procedure TfrmODAllergy.btnAgentClick(Sender: TObject);
 | 
|---|
 | 333 | var
 | 
|---|
 | 334 |   Allergy: string;
 | 
|---|
 | 335 | begin
 | 
|---|
 | 336 |   inherited;
 | 
|---|
 | 337 |   AllergyLookup(Allergy, ckNoKnownAllergies.Enabled);
 | 
|---|
 | 338 |   if Piece(Allergy, U, 1) = '-1' then
 | 
|---|
 | 339 |     ckNoKnownAllergies.Checked := True
 | 
|---|
 | 340 |   else
 | 
|---|
 | 341 |     if Allergy <> '' then
 | 
|---|
 | 342 |       begin
 | 
|---|
 | 343 |         lstAllergy.Clear;
 | 
|---|
 | 344 |         lstAllergy.Items.Add(Allergy);
 | 
|---|
 | 345 |         cboReactionType.SelectByID(Piece(Allergy, U, 4));
 | 
|---|
 | 346 |       end
 | 
|---|
 | 347 |   else
 | 
|---|
 | 348 |     Close;
 | 
|---|
 | 349 |   ControlChange(lstAllergy);
 | 
|---|
 | 350 | end;
 | 
|---|
 | 351 | 
 | 
|---|
 | 352 | procedure TfrmODAllergy.cboSymptomsClick(Sender: TObject);
 | 
|---|
 | 353 | begin
 | 
|---|
 | 354 |   inherited;
 | 
|---|
 | 355 |   if cboSymptoms.ItemIndex < 0 then exit;
 | 
|---|
 | 356 |   Changing := True;
 | 
|---|
 | 357 |   if lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1 then exit;
 | 
|---|
 | 358 |   with lstSelectedSymptoms do
 | 
|---|
 | 359 |     begin
 | 
|---|
 | 360 |       Items.Add(cboSymptoms.Items[cboSymptoms.ItemIndex]);
 | 
|---|
 | 361 |       SelectByID(cboSymptoms.ItemID);
 | 
|---|
 | 362 |     end;
 | 
|---|
 | 363 |   Changing := False;
 | 
|---|
 | 364 |   ControlChange(Self)
 | 
|---|
 | 365 | end;
 | 
|---|
 | 366 | 
 | 
|---|
 | 367 | procedure TfrmODAllergy.FormDestroy(Sender: TObject);
 | 
|---|
 | 368 | begin
 | 
|---|
 | 369 |   AllergyList.Free;
 | 
|---|
 | 370 |   inherited;
 | 
|---|
 | 371 | end;
 | 
|---|
 | 372 | 
 | 
|---|
 | 373 | procedure TfrmODAllergy.ckNoKnownAllergiesClick(Sender: TObject);
 | 
|---|
 | 374 | begin
 | 
|---|
 | 375 |   inherited;
 | 
|---|
 | 376 |   if ckNoKnownAllergies.Checked then
 | 
|---|
 | 377 |     begin
 | 
|---|
 | 378 |       DisableControls;
 | 
|---|
 | 379 |       FNKAOrder := True;
 | 
|---|
 | 380 |     end
 | 
|---|
 | 381 |   else
 | 
|---|
 | 382 |     begin
 | 
|---|
 | 383 |       EnableControls;
 | 
|---|
 | 384 |       FNKAOrder := False;
 | 
|---|
 | 385 |     end;
 | 
|---|
 | 386 |   ControlChange(Self);
 | 
|---|
 | 387 | end;
 | 
|---|
 | 388 | 
 | 
|---|
 | 389 | procedure TfrmODAllergy.DisableControls;
 | 
|---|
 | 390 | begin
 | 
|---|
 | 391 |    InitDialog;
 | 
|---|
 | 392 |    btnAgent.Enabled            := False;
 | 
|---|
 | 393 |    cboReactionType.Enabled     := False;
 | 
|---|
 | 394 |    lblReactionType.Enabled     := False;
 | 
|---|
 | 395 |    lblAgent.Enabled            := False;
 | 
|---|
 | 396 |    lblSymptoms.Enabled         := False;
 | 
|---|
 | 397 |    lblSelectedSymptoms.Enabled := False;
 | 
|---|
 | 398 |    grpObsHist.Enabled          := False;
 | 
|---|
 | 399 |    memComments.Enabled         := False;
 | 
|---|
 | 400 |    lblComments.Enabled         := False;
 | 
|---|
 | 401 |    lstSelectedSymptoms.Enabled := False;
 | 
|---|
 | 402 |    lblObservedDate.Enabled     := False;
 | 
|---|
 | 403 |    calObservedDate.Enabled     := False;
 | 
|---|
 | 404 |    lblSeverity.Enabled         := False;
 | 
|---|
 | 405 |    cboSeverity.Enabled         := False;
 | 
|---|
 | 406 |    lstAllergy.Enabled          := False;
 | 
|---|
 | 407 |    cboSymptoms.Enabled         := False;
 | 
|---|
 | 408 |    btnDateTime.Enabled         := False;
 | 
|---|
 | 409 | end;
 | 
|---|
 | 410 | 
 | 
|---|
 | 411 | procedure TfrmODAllergy.EnableControls;
 | 
|---|
 | 412 | begin
 | 
|---|
 | 413 |    InitDialog;
 | 
|---|
 | 414 |    btnAgent.Enabled            := True;
 | 
|---|
 | 415 |    cboReactionType.Enabled     := True;
 | 
|---|
 | 416 |    lblReactionType.Enabled     := True;
 | 
|---|
 | 417 |    lblAgent.Enabled            := True;
 | 
|---|
 | 418 |    lblSymptoms.Enabled         := True;
 | 
|---|
 | 419 |    lblSelectedSymptoms.Enabled := True;
 | 
|---|
 | 420 |    grpObsHist.Enabled          := True;
 | 
|---|
 | 421 |    memComments.Enabled         := True;
 | 
|---|
 | 422 |    lblComments.Enabled         := True;
 | 
|---|
 | 423 |    lstSelectedSymptoms.Enabled := True;
 | 
|---|
 | 424 |    lblObservedDate.Enabled     := True;
 | 
|---|
 | 425 |    calObservedDate.Enabled     := True;
 | 
|---|
 | 426 |    lblSeverity.Enabled         := True;
 | 
|---|
 | 427 |    cboSeverity.Enabled         := True;
 | 
|---|
 | 428 |    lstAllergy.Enabled          := True;
 | 
|---|
 | 429 |    cboSymptoms.Enabled         := True;
 | 
|---|
 | 430 |    btnDateTime.Enabled         := True;
 | 
|---|
 | 431 | end;
 | 
|---|
 | 432 | 
 | 
|---|
 | 433 | procedure TfrmODAllergy.cmdAcceptClick(Sender: TObject);
 | 
|---|
 | 434 | begin
 | 
|---|
 | 435 |   if not FNKAOrder then
 | 
|---|
 | 436 |     inherited
 | 
|---|
 | 437 |   else
 | 
|---|
 | 438 |     if ValidSave then
 | 
|---|
 | 439 |       begin
 | 
|---|
 | 440 |         ckNoKnownAllergies.Checked := False;
 | 
|---|
 | 441 |         memOrder.Clear;
 | 
|---|
 | 442 |         Responses.Clear;    // to allow form to close without prompting to save order
 | 
|---|
 | 443 |         Close;
 | 
|---|
 | 444 |       end;
 | 
|---|
 | 445 | end;
 | 
|---|
 | 446 | 
 | 
|---|
 | 447 | procedure TfrmODAllergy.btnCurrentClick(Sender: TObject);
 | 
|---|
 | 448 | begin
 | 
|---|
 | 449 |   inherited;
 | 
|---|
 | 450 |   ShowCWAD;
 | 
|---|
 | 451 | end;
 | 
|---|
 | 452 | 
 | 
|---|
 | 453 | 
 | 
|---|
 | 454 | procedure TfrmODAllergy.btnRemoveClick(Sender: TObject);
 | 
|---|
 | 455 | var
 | 
|---|
 | 456 |   i: integer;
 | 
|---|
 | 457 | begin
 | 
|---|
 | 458 |   inherited;
 | 
|---|
 | 459 |   with lstSelectedSymptoms do
 | 
|---|
 | 460 |     begin
 | 
|---|
 | 461 |       if (Items.Count = 0) or (ItemIndex = -1) then exit;
 | 
|---|
 | 462 |       i := ItemIndex;
 | 
|---|
 | 463 |       Items.Delete(ItemIndex);
 | 
|---|
 | 464 |       ItemIndex := i - 1;
 | 
|---|
 | 465 |       if (Items.Count > 0) and (ItemIndex = -1) then ItemIndex := 0;
 | 
|---|
 | 466 |     end;
 | 
|---|
 | 467 | end;
 | 
|---|
 | 468 | 
 | 
|---|
 | 469 | procedure TfrmODAllergy.lstAllergyClick(Sender: TObject);
 | 
|---|
 | 470 | begin
 | 
|---|
 | 471 |   inherited;
 | 
|---|
 | 472 |   lstAllergy.ItemIndex := -1;
 | 
|---|
 | 473 | end;
 | 
|---|
 | 474 | 
 | 
|---|
 | 475 | procedure TfrmODAllergy.btnDateTimeClick(Sender: TObject);
 | 
|---|
 | 476 | begin
 | 
|---|
 | 477 |   inherited;
 | 
|---|
 | 478 |   with lstSelectedSymptoms do
 | 
|---|
 | 479 |     begin
 | 
|---|
 | 480 |       if (Items.Count = 0) or (ItemIndex = -1) then exit;
 | 
|---|
 | 481 |       dlgReactionDateTime.FMDateTime := FMNow;
 | 
|---|
 | 482 |       if not dlgReactionDateTime.Execute then exit;
 | 
|---|
 | 483 |       if dlgReactionDateTime.FMDateTime > FMNow then
 | 
|---|
 | 484 |         InfoBox(TX_NO_FUTURE_DATES, TX_CAP_FUTURE, MB_OK)
 | 
|---|
 | 485 |       else
 | 
|---|
 | 486 |         Items[ItemIndex] := Items[ItemIndex] + U + FloatToStr(dlgReactionDateTime.FMDateTime) + U + FormatFMDateTime('mmm dd,yyyy@hh:nn', dlgReactionDateTime.FMDateTime);
 | 
|---|
 | 487 |     end;
 | 
|---|
 | 488 | end;
 | 
|---|
 | 489 | 
 | 
|---|
 | 490 | procedure TfrmODAllergy.cboSymptomsKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
 | 491 |   Shift: TShiftState);
 | 
|---|
 | 492 | begin
 | 
|---|
 | 493 |   inherited;
 | 
|---|
 | 494 |   if Key = VK_RETURN then cboSymptomsMouseClick(Self);
 | 
|---|
 | 495 | end;
 | 
|---|
 | 496 | 
 | 
|---|
 | 497 | procedure TfrmODAllergy.cboSymptomsMouseClick(Sender: TObject);
 | 
|---|
| [460] | 498 | var
 | 
|---|
 | 499 |   x: string;
 | 
|---|
| [459] | 500 | begin
 | 
|---|
 | 501 |   inherited;
 | 
|---|
 | 502 |   if cboSymptoms.ItemIndex < 0 then exit;
 | 
|---|
 | 503 |   Changing := True;
 | 
|---|
 | 504 |   if lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1 then exit;
 | 
|---|
| [460] | 505 |   with cboSymptoms do
 | 
|---|
 | 506 |     if Piece(Items[ItemIndex], U, 3) <> '' then
 | 
|---|
 | 507 |       x := ItemID + U + Piece(Items[ItemIndex], U, 3)
 | 
|---|
 | 508 |     else
 | 
|---|
 | 509 |       x := ItemID + U + Piece(Items[ItemIndex], U, 2);
 | 
|---|
| [459] | 510 |   with lstSelectedSymptoms do
 | 
|---|
 | 511 |     begin
 | 
|---|
| [460] | 512 |       Items.Add(x);
 | 
|---|
| [459] | 513 |       SelectByID(cboSymptoms.ItemID);
 | 
|---|
 | 514 |     end;
 | 
|---|
 | 515 |   Changing := False;
 | 
|---|
 | 516 |   ControlChange(Self)
 | 
|---|
 | 517 | end;
 | 
|---|
 | 518 | 
 | 
|---|
 | 519 | procedure TfrmODAllergy.memCommentsKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
 | 520 |   Shift: TShiftState);
 | 
|---|
 | 521 | begin
 | 
|---|
 | 522 |   inherited;
 | 
|---|
 | 523 |   if (Key = VK_TAB) then
 | 
|---|
 | 524 |   begin
 | 
|---|
 | 525 |     if ssShift in Shift then
 | 
|---|
 | 526 |     begin
 | 
|---|
 | 527 |       FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
 | 
|---|
 | 528 |       Key := 0;
 | 
|---|
 | 529 |     end
 | 
|---|
 | 530 |     else if ssCtrl      in Shift then
 | 
|---|
 | 531 |     begin
 | 
|---|
 | 532 |       FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
 | 
|---|
 | 533 |       Key := 0;
 | 
|---|
 | 534 |     end;
 | 
|---|
 | 535 |   end;
 | 
|---|
 | 536 |   if (key = VK_ESCAPE) then begin
 | 
|---|
 | 537 |     FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
 | 
|---|
 | 538 |     key := 0;
 | 
|---|
 | 539 |   end;
 | 
|---|
 | 540 | end;
 | 
|---|
 | 541 | 
 | 
|---|
 | 542 | end.
 | 
|---|