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