| 1 | //kt -- Modified with SourceScanner on 8/8/2007
 | 
|---|
| 2 | unit fODConsult;
 | 
|---|
| 3 | 
 | 
|---|
| 4 | {$O-}
 | 
|---|
| 5 | 
 | 
|---|
| 6 | interface
 | 
|---|
| 7 | 
 | 
|---|
| 8 | uses
 | 
|---|
| 9 |   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
|---|
| 10 |   fODBase, StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ORfn, uConst, Buttons,
 | 
|---|
| 11 |   Menus, UBAGlobals, rOrders, fBALocalDiagnoses, UBAConst, UBACore, ORNet,
 | 
|---|
| 12 |   DKLang ;
 | 
|---|
| 13 | 
 | 
|---|
| 14 | type
 | 
|---|
| 15 |   TfrmODCslt = class(TfrmODBase)
 | 
|---|
| 16 |     cboService: TORComboBox;
 | 
|---|
| 17 |     cboUrgency: TORComboBox;
 | 
|---|
| 18 |     cboPlace: TORComboBox;
 | 
|---|
| 19 |     txtProvDiag: TCaptionEdit;
 | 
|---|
| 20 |     txtAttn: TORComboBox;
 | 
|---|
| 21 |     lblService: TLabel;
 | 
|---|
| 22 |     lblUrgency: TStaticText;
 | 
|---|
| 23 |     lblPlace: TStaticText;
 | 
|---|
| 24 |     lblAttn: TStaticText;
 | 
|---|
| 25 |     lblProvDiag: TStaticText;
 | 
|---|
| 26 |     treService: TORTreeView;
 | 
|---|
| 27 |     cboCategory: TORComboBox;
 | 
|---|
| 28 |     pnlServiceTreeButton: TKeyClickPanel;
 | 
|---|
| 29 |     btnServiceTree: TSpeedButton;
 | 
|---|
| 30 |     mnuPopProvDx: TPopupMenu;
 | 
|---|
| 31 |     mnuPopProvDxDelete: TMenuItem;
 | 
|---|
| 32 |     cmdLexSearch: TButton;
 | 
|---|
| 33 |     popReason: TPopupMenu;
 | 
|---|
| 34 |     popReasonCut: TMenuItem;
 | 
|---|
| 35 |     popReasonCopy: TMenuItem;
 | 
|---|
| 36 |     popReasonPaste: TMenuItem;
 | 
|---|
| 37 |     popReasonPaste2: TMenuItem;
 | 
|---|
| 38 |     popReasonReformat: TMenuItem;
 | 
|---|
| 39 |     gbInptOpt: TGroupBox;
 | 
|---|
| 40 |     radInpatient: TRadioButton;
 | 
|---|
| 41 |     radOutpatient: TRadioButton;
 | 
|---|
| 42 |     pnlReason: TPanel;
 | 
|---|
| 43 |     lblReason: TLabel;
 | 
|---|
| 44 |     memReason: TRichEdit;
 | 
|---|
| 45 |     btnDiagnosis: TButton;
 | 
|---|
| 46 |     procedure FormCreate(Sender: TObject);
 | 
|---|
| 47 |     procedure txtAttnNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 48 |       Direction, InsertAt: Integer);
 | 
|---|
| 49 |     procedure radInpatientClick(Sender: TObject);
 | 
|---|
| 50 |     procedure radOutpatientClick(Sender: TObject);
 | 
|---|
| 51 |     procedure treServiceChange(Sender: TObject; Node: TTreeNode);
 | 
|---|
| 52 |     procedure ControlChange(Sender: TObject);
 | 
|---|
| 53 |     procedure treServiceExit(Sender: TObject);
 | 
|---|
| 54 |     procedure cmdAcceptClick(Sender: TObject);
 | 
|---|
| 55 |     procedure memReasonExit(Sender: TObject);
 | 
|---|
| 56 |     procedure cboServiceSelect(Sender: TObject);
 | 
|---|
| 57 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
| 58 |     procedure btnServiceTreeClick(Sender: TObject);
 | 
|---|
| 59 |     procedure treServiceCollapsing(Sender: TObject; Node: TTreeNode;
 | 
|---|
| 60 |       var AllowCollapse: Boolean);
 | 
|---|
| 61 |     procedure treServiceMouseDown(Sender: TObject; Button: TMouseButton;
 | 
|---|
| 62 |       Shift: TShiftState; X, Y: Integer);
 | 
|---|
| 63 |     procedure cmdLexSearchClick(Sender: TObject);
 | 
|---|
| 64 |     procedure mnuPopProvDxDeleteClick(Sender: TObject);
 | 
|---|
| 65 |     procedure txtProvDiagChange(Sender: TObject);
 | 
|---|
| 66 |     procedure cboServiceExit(Sender: TObject);
 | 
|---|
| 67 |     procedure popReasonCutClick(Sender: TObject);
 | 
|---|
| 68 |     procedure popReasonCopyClick(Sender: TObject);
 | 
|---|
| 69 |     procedure popReasonPasteClick(Sender: TObject);
 | 
|---|
| 70 |     procedure popReasonPopup(Sender: TObject);
 | 
|---|
| 71 |     procedure popReasonReformatClick(Sender: TObject);
 | 
|---|
| 72 |     procedure pnlServiceTreeButtonEnter(Sender: TObject);
 | 
|---|
| 73 |     procedure pnlServiceTreeButtonExit(Sender: TObject);
 | 
|---|
| 74 |     procedure treServiceKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 75 |       Shift: TShiftState);
 | 
|---|
| 76 |     procedure treServiceKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 77 |       Shift: TShiftState);
 | 
|---|
| 78 |     procedure memReasonKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 79 |       Shift: TShiftState);
 | 
|---|
| 80 |     procedure memReasonKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 81 |       Shift: TShiftState);
 | 
|---|
| 82 |     procedure memReasonKeyPress(Sender: TObject; var Key: Char);
 | 
|---|
| 83 |     procedure cboServiceKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 84 |       Shift: TShiftState);
 | 
|---|
| 85 |     procedure cboServiceKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 86 |       Shift: TShiftState);
 | 
|---|
| 87 |     procedure btnDiagnosisClick(Sender: TObject);
 | 
|---|
| 88 |     procedure cmdQuitClick(Sender: TObject);
 | 
|---|
| 89 |     procedure FormClose(Sender: TObject; var Action: TCloseAction);
 | 
|---|
| 90 | 
 | 
|---|
| 91 |   private
 | 
|---|
| 92 |     FcboServiceKeyDownStopClick : boolean;
 | 
|---|
| 93 |     FKeyBoarding: boolean;
 | 
|---|
| 94 |     FLastServiceID: string;
 | 
|---|
| 95 |     FEditCtrl: TCustomEdit;
 | 
|---|
| 96 |     FNavigatingTab: boolean;
 | 
|---|
| 97 |     procedure BuildQuickTree(QuickList: TStrings; const Parent: string; Node: TTreeNode);
 | 
|---|
| 98 |     procedure ReadServerVariables;
 | 
|---|
| 99 |     procedure SetProvDiagPromptingMode;
 | 
|---|
| 100 |     procedure SetupReasonForRequest(OrderAction: integer);
 | 
|---|
| 101 |     procedure GetProvDxandValidateCode(AResponses: TResponses);
 | 
|---|
| 102 |     function ShowPrerequisites: boolean;
 | 
|---|
| 103 |     procedure DoSetFontSize(FontSize: integer);
 | 
|---|
| 104 |     procedure SetUpQuickOrderDX;
 | 
|---|
| 105 |     procedure SaveConsultDxForNurse(pDiagnosis: string);  // save the dx entered by nurese if Master BA switch is ON
 | 
|---|
| 106 |     procedure SetUpCopyConsultDiagnoses(pOrderID:string);
 | 
|---|
| 107 |   protected
 | 
|---|
| 108 |     procedure InitDialog; override;
 | 
|---|
| 109 |     procedure Validate(var AnErrMsg: string); override;
 | 
|---|
| 110 |     function DefaultReasonForRequest(Service: string; Resolve: Boolean): TStrings;
 | 
|---|
| 111 |     
 | 
|---|
| 112 |   public
 | 
|---|
| 113 |     procedure SetupDialog(OrderAction: Integer; const ID: string); override;
 | 
|---|
| 114 |     procedure SetFontSize(FontSize: integer); override;
 | 
|---|
| 115 |   end;
 | 
|---|
| 116 | 
 | 
|---|
| 117 | var
 | 
|---|
| 118 |   LastNode: integer ;
 | 
|---|
| 119 |   displayDXCode: string;
 | 
|---|
| 120 |   consultQuickOrder: boolean;
 | 
|---|
| 121 | 
 | 
|---|
| 122 | 
 | 
|---|
| 123 | implementation
 | 
|---|
| 124 | 
 | 
|---|
| 125 | {$R *.DFM}
 | 
|---|
| 126 | 
 | 
|---|
| 127 | uses
 | 
|---|
| 128 |     rODBase, rConsults, uCore, uConsults, rCore, fConsults, fPCELex, rPCE, fPreReq,
 | 
|---|
| 129 |     ORClasses, clipbrd, uTemplates, fFrame, uODBase;
 | 
|---|
| 130 | 
 | 
|---|
| 131 | var
 | 
|---|
| 132 |   SvcList, QuickList, Defaults: TStrings ;
 | 
|---|
| 133 |   ProvDx:  TProvisionalDiagnosis;
 | 
|---|
| 134 |   GMRCREAF: string;
 | 
|---|
| 135 |   BADxUpdated: boolean;
 | 
|---|
| 136 |   quickCode: string;
 | 
|---|
| 137 | 
 | 
|---|
| 138 | //const
 | 
|---|
| 139 | //TX_NOTTHISSVC_TEXT = 'Consults cannot be ordered from this service' ;  <-- original line.  //kt 8/8/2007
 | 
|---|
| 140 | //TX_NO_SVC          = 'A service must be specified.'    ;  <-- original line.  //kt 8/8/2007
 | 
|---|
| 141 | //TX_NO_REASON       = 'A reason for this consult must be entered.'  ;  <-- original line.  //kt 8/8/2007
 | 
|---|
| 142 | //TX_SVC_ERROR       = 'This service has not been defined in your Orderable Items file.' +  <-- original line.  //kt 8/8/2007
 | 
|---|
| 143 | //                     #13#10'Contact IRM for assistance.' ;  <-- original line.  //kt 8/8/2007
 | 
|---|
| 144 | //TX_NO_URGENCY      = 'An urgency must be specified.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 145 | //TX_NO_PLACE        = 'A place of consultation must be specified';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 146 | //TX_NO_DIAG         = 'A provisional diagnosis must be entered for consults to this service.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 147 | //TX_SELECT_DIAG     = 'You must select a diagnosis for consults to this service.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 148 | //TX_GROUPER         = 'This is not an orderable service. Please select a subspecialty';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 149 | //TC_INACTIVE_CODE   = 'Inactive ICD Code';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 150 | //TX_INACTIVE_CODE1  = 'The provisional diagnosis code is not active as of today''s date.' + #13#10;  <-- original line.  //kt 8/8/2007
 | 
|---|
| 151 | //TX_INACTIVE_CODE_REQD     = 'Another code must be selected before the order can be saved.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 152 | //TX_INACTIVE_CODE_OPTIONAL = 'If another code is not selected, no code will be saved.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 153 | 
 | 
|---|
| 154 | var
 | 
|---|
| 155 |   TX_NOTTHISSVC_TEXT : string; //kt
 | 
|---|
| 156 |   TX_NO_SVC          : string; //kt
 | 
|---|
| 157 |   TX_NO_REASON       : string; //kt
 | 
|---|
| 158 |   TX_SVC_ERROR       : string; //kt
 | 
|---|
| 159 |   TX_NO_URGENCY      : string; //kt
 | 
|---|
| 160 |   TX_NO_PLACE        : string; //kt
 | 
|---|
| 161 |   TX_NO_DIAG         : string; //kt
 | 
|---|
| 162 |   TX_SELECT_DIAG     : string; //kt
 | 
|---|
| 163 |   TX_GROUPER         : string; //kt
 | 
|---|
| 164 |   TC_INACTIVE_CODE   : string; //kt
 | 
|---|
| 165 |   TX_INACTIVE_CODE1  : string; //kt
 | 
|---|
| 166 |   TX_INACTIVE_CODE_REQD     : string; //kt
 | 
|---|
| 167 |   TX_INACTIVE_CODE_OPTIONAL : string; //kt
 | 
|---|
| 168 | 
 | 
|---|
| 169 | procedure SetupVars;
 | 
|---|
| 170 | //kt Added entire function to replace constant declarations 8/8/2007
 | 
|---|
| 171 | begin
 | 
|---|
| 172 |   TX_NOTTHISSVC_TEXT := DKLangConstW('fODConsult_Consults_cannot_be_ordered_from_this_service') ; 
 | 
|---|
| 173 |   TX_NO_SVC          := DKLangConstW('fODConsult_A_service_must_be_specifiedx')    ;
 | 
|---|
| 174 |   TX_NO_REASON       := DKLangConstW('fODConsult_A_reason_for_this_consult_must_be_enteredx')  ;
 | 
|---|
| 175 |   TX_SVC_ERROR       := DKLangConstW('fODConsult_This_service_has_not_been_defined_in_your_Orderable_Items_filex') +
 | 
|---|
| 176 |                        #13#10 + DKLangConstW('fODConsult_Contact_IRM_for_assistancex') ;
 | 
|---|
| 177 |   TX_NO_URGENCY      := DKLangConstW('fODConsult_An_urgency_must_be_specifiedx');
 | 
|---|
| 178 |   TX_NO_PLACE        := DKLangConstW('fODConsult_A_place_of_consultation_must_be_specified'); 
 | 
|---|
| 179 |   TX_NO_DIAG         := DKLangConstW('fODConsult_A_provisional_diagnosis_must_be_entered_for_consults_to_this_servicex'); 
 | 
|---|
| 180 |   TX_SELECT_DIAG     := DKLangConstW('fODConsult_You_must_select_a_diagnosis_for_consults_to_this_servicex'); 
 | 
|---|
| 181 |   TX_GROUPER         := DKLangConstW('fODConsult_This_is_not_an_orderable_servicex_Please_select_a_subspecialty'); 
 | 
|---|
| 182 |   TC_INACTIVE_CODE   := DKLangConstW('fODConsult_Inactive_ICD_Code'); 
 | 
|---|
| 183 |   TX_INACTIVE_CODE1  := DKLangConstW('fODConsult_The_provisional_diagnosis_code_is_not_active_as_of_todayxxs_datex') + #13#10; 
 | 
|---|
| 184 |   TX_INACTIVE_CODE_REQD     := DKLangConstW('fODConsult_Another_code_must_be_selected_before_the_order_can_be_savedx'); 
 | 
|---|
| 185 |   TX_INACTIVE_CODE_OPTIONAL := DKLangConstW('fODConsult_If_another_code_is_not_selectedx_no_code_will_be_savedx'); 
 | 
|---|
| 186 | end;
 | 
|---|
| 187 |  
 | 
|---|
| 188 | procedure TfrmODCslt.FormCreate(Sender: TObject);
 | 
|---|
| 189 | begin
 | 
|---|
| 190 |   frmFrame.pnlVisit.Enabled := false;
 | 
|---|
| 191 |   AutoSizeDisabled := True;
 | 
|---|
| 192 |   inherited;
 | 
|---|
| 193 |   if BILLING_AWARE then
 | 
|---|
| 194 |   begin
 | 
|---|
| 195 |      btnDiagnosis.Visible := True;
 | 
|---|
| 196 |      cmdLexSearch.Visible := False;
 | 
|---|
| 197 |   end
 | 
|---|
| 198 |   else
 | 
|---|
| 199 |   begin
 | 
|---|
| 200 |      btnDiagnosis.Visible := False;
 | 
|---|
| 201 |      cmdLexSearch.Visible := True;
 | 
|---|
| 202 |   end;
 | 
|---|
| 203 |   Defaults  := TStringList.Create ;
 | 
|---|
| 204 |   SvcList   := TStringList.Create ;
 | 
|---|
| 205 |   QuickList := TStringList.Create ;
 | 
|---|
| 206 |   AllowQuickOrder := True;
 | 
|---|
| 207 |   LastNode := 0;
 | 
|---|
| 208 |   FLastServiceID := '' ;
 | 
|---|
| 209 |   GMRCREAF := '';
 | 
|---|
| 210 |   FillChar(ProvDx, SizeOf(ProvDx), 0);
 | 
|---|
| 211 |   FillerID := 'GMRC';                     // does 'on Display' order check **KCM**
 | 
|---|
| 212 | //StatusText('Loading Dialog Definition');  <-- original line.  //kt 8/8/2007
 | 
|---|
| 213 |   StatusText(DKLangConstW('fODConsult_Loading_Dialog_Definition')); //kt added 8/8/2007
 | 
|---|
| 214 |   Responses.Dialog := 'GMRCOR CONSULT';   // loads formatting info
 | 
|---|
| 215 | //StatusText('Loading Default Values');  <-- original line.  //kt 8/8/2007
 | 
|---|
| 216 |   StatusText(DKLangConstW('fODConsult_Loading_Default_Values')); //kt added 8/8/2007
 | 
|---|
| 217 |   Defaults.Assign(ODForConsults);  // ODForConsults returns TStrings with defaults
 | 
|---|
| 218 |   CtrlInits.LoadDefaults(Defaults);
 | 
|---|
| 219 |   txtAttn.InitLongList('') ;
 | 
|---|
| 220 |   PreserveControl(txtAttn);
 | 
|---|
| 221 |   InitDialog;
 | 
|---|
| 222 |   //Calling virtual SetFontSize in constructor is a bad idea!
 | 
|---|
| 223 |   DoSetFontSize( MainFontSize);
 | 
|---|
| 224 |   FcboServiceKeyDownStopClick := false;
 | 
|---|
| 225 |   consultQuickOrder := false;
 | 
|---|
| 226 | 
 | 
|---|
| 227 | 
 | 
|---|
| 228 | end;
 | 
|---|
| 229 | 
 | 
|---|
| 230 | procedure TfrmODCslt.InitDialog;
 | 
|---|
| 231 | begin
 | 
|---|
| 232 |   inherited;
 | 
|---|
| 233 |   Changing := True;
 | 
|---|
| 234 |   FLastServiceID := '';
 | 
|---|
| 235 |   QuickList.Clear;
 | 
|---|
| 236 |   with CtrlInits do
 | 
|---|
| 237 |   begin
 | 
|---|
| 238 | // ExtractItems(QuickList, Defaults, 'ShortList');  <-- original line.  //kt 8/8/2007
 | 
|---|
| 239 |    ExtractItems(QuickList, Defaults, DKLangConstW('fODConsult_ShortList')); //kt added 8/8/2007
 | 
|---|
| 240 |    if OrderForInpatient then                            //INPATIENT CONSULT
 | 
|---|
| 241 |     begin
 | 
|---|
| 242 |       radInpatient.Checked := True;
 | 
|---|
| 243 |       cboCategory.Items.Clear;
 | 
|---|
| 244 |       cboCategory.Items.Add('I^Inpatient');
 | 
|---|
| 245 |       cboCategory.SelectById('I');
 | 
|---|
| 246 |       SetControl(cboPlace, 'Inpt Place');
 | 
|---|
| 247 |       SetControl(cboUrgency, 'Inpt Cslt Urgencies');        //S.GMRCT
 | 
|---|
| 248 |     end
 | 
|---|
| 249 |    else
 | 
|---|
| 250 |     begin
 | 
|---|
| 251 |       radOutpatient.Checked := True;                   //OUTPATIENT CONSULT
 | 
|---|
| 252 |       cboCategory.Items.Clear;
 | 
|---|
| 253 |       cboCategory.Items.Add('O^Outpatient');
 | 
|---|
| 254 |       cboCategory.SelectById('O');
 | 
|---|
| 255 |       SetControl(cboPlace, 'Outpt Place');
 | 
|---|
| 256 |       SetControl(cboUrgency, 'Outpt Urgencies');      //S.GMRCO
 | 
|---|
| 257 |     end ;
 | 
|---|
| 258 |   end ;
 | 
|---|
| 259 | //StatusText('Initializing Long List');  <-- original line.  //kt 8/8/2007
 | 
|---|
| 260 |   StatusText(DKLangConstW('fODConsult_Initializing_Long_List')); //kt added 8/8/2007
 | 
|---|
| 261 |   memOrder.Clear ;
 | 
|---|
| 262 |   memReason.Clear;
 | 
|---|
| 263 |   cboService.Enabled := True;
 | 
|---|
| 264 |   cboService.Font.Color := clWindowText;
 | 
|---|
| 265 |   cboService.Height := 25 + (7 * cboService.ItemHeight);
 | 
|---|
| 266 |   btnServiceTree.Enabled := True;
 | 
|---|
| 267 |   pnlServiceTreeButton.Enabled := True;
 | 
|---|
| 268 |   ActiveControl := cboService;
 | 
|---|
| 269 |   SetProvDiagPromptingMode;
 | 
|---|
| 270 |   Changing := False;
 | 
|---|
| 271 |   StatusText('');
 | 
|---|
| 272 | end;
 | 
|---|
| 273 | 
 | 
|---|
| 274 | procedure TfrmODCslt.SetupDialog(OrderAction: Integer; const ID: string);
 | 
|---|
| 275 | //const
 | 
|---|
| 276 | //TX_INACTIVE_SVC = 'This consult service is currently inactive and not receiving requests.' + CRLF +  <-- original line.  //kt 8/8/2007
 | 
|---|
| 277 | //                  'Please contact your Clinical Coordinator/IRM staff to fix this order.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 278 | //TX_INACTIVE_SVC_CAP = 'Inactive Service';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 279 | var
 | 
|---|
| 280 |  i:integer;
 | 
|---|
| 281 |  AList: TStringList;
 | 
|---|
| 282 |  tmpResp: TResponse;
 | 
|---|
| 283 |  SvcIEN: string;
 | 
|---|
| 284 |   TX_INACTIVE_SVC : string; //kt
 | 
|---|
| 285 |   TX_INACTIVE_SVC_CAP : string; //kt
 | 
|---|
| 286 | begin
 | 
|---|
| 287 |   TX_INACTIVE_SVC := DKLangConstW('fODConsult_This_consult_service_is_currently_inactive_and_not_receiving_requestsx') + CRLF + //kt added 8/8/2007
 | 
|---|
| 288 |                     DKLangConstW('fODConsult_Please_contact_your_Clinical_CoordinatorxIRM_staff_to_fix_this_orderx'); //kt added 8/8/2007
 | 
|---|
| 289 |   TX_INACTIVE_SVC_CAP := DKLangConstW('fODConsult_Inactive_Service'); //kt added 8/8/2007
 | 
|---|
| 290 |   inherited;
 | 
|---|
| 291 |   ReadServerVariables;
 | 
|---|
| 292 |   AList := TStringList.Create;
 | 
|---|
| 293 |   try
 | 
|---|
| 294 |     if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
 | 
|---|
| 295 |     begin
 | 
|---|
| 296 |       Changing := True;
 | 
|---|
| 297 |       tmpResp := TResponse(FindResponseByName('ORDERABLE',1));
 | 
|---|
| 298 |       SvcIEN := GetServiceIEN(tmpResp.IValue);
 | 
|---|
| 299 |       if SvcIEN = '-1' then
 | 
|---|
| 300 |         begin
 | 
|---|
| 301 |           InfoBox(TX_INACTIVE_SVC, TX_INACTIVE_SVC_CAP, MB_OK);
 | 
|---|
| 302 |           AbortOrder := True;
 | 
|---|
| 303 |           Close;
 | 
|---|
| 304 |           Exit;
 | 
|---|
| 305 |         end;
 | 
|---|
| 306 |       cboService.Items.Add(SvcIEN + U + tmpResp.EValue + '^^^^' + tmpResp.IValue);
 | 
|---|
| 307 |       cboService.SelectByID(SvcIEN);
 | 
|---|
| 308 |       tmpResp := TResponse(FindResponseByName('CLASS',1));
 | 
|---|
| 309 |       cboCategory.SelectByID(tmpResp.IValue);
 | 
|---|
| 310 |       if tmpResp.IValue = 'I' then
 | 
|---|
| 311 |         radInpatient.Checked := True
 | 
|---|
| 312 |       else
 | 
|---|
| 313 |         radOutpatient.Checked := True ;
 | 
|---|
| 314 |       SetControl(cboUrgency,    'URGENCY',     1);
 | 
|---|
| 315 |       SetControl(cboPlace,      'PLACE',     1);
 | 
|---|
| 316 |       SetControl(txtAttn,       'PROVIDER',  1);
 | 
|---|
| 317 |       cboService.Enabled := False;
 | 
|---|
| 318 |       cboService.Font.Color := clGrayText;
 | 
|---|
| 319 |       btnServiceTree.Enabled := False;
 | 
|---|
| 320 |       pnlServiceTreeButton.Enabled := False;
 | 
|---|
| 321 |       if (OrderAction in [ORDER_COPY, ORDER_QUICK]) and (not ShowPrerequisites) then
 | 
|---|
| 322 |         begin
 | 
|---|
| 323 |           Close;
 | 
|---|
| 324 |           Exit;
 | 
|---|
| 325 |         end;
 | 
|---|
| 326 |       SetProvDiagPromptingMode;
 | 
|---|
| 327 |       GetProvDxandValidateCode(Responses);
 | 
|---|
| 328 |       SetControl(memReason,     'COMMENT',   1);
 | 
|---|
| 329 |       SetupReasonForRequest(OrderAction);
 | 
|---|
| 330 |       Changing := False;
 | 
|---|
| 331 |       ControlChange(Self);
 | 
|---|
| 332 |     end
 | 
|---|
| 333 |     else
 | 
|---|
| 334 |     begin
 | 
|---|
| 335 |       if QuickList.Count > 0 then BuildQuickTree(QuickList, '0', nil) ;
 | 
|---|
| 336 |       SvcList.Assign(LoadServiceListWithSynonyms(CN_SVC_LIST_ORD));           {RV}
 | 
|---|
| 337 |       AList.Assign(SvcList);
 | 
|---|
| 338 |       SortByPiece(AList, U, 2);
 | 
|---|
| 339 |       BuildServiceTree(treService, SvcList, '0', nil) ;
 | 
|---|
| 340 |       with treService do
 | 
|---|
| 341 |         begin
 | 
|---|
| 342 |           for i:=0 to Items.Count-1 do
 | 
|---|
| 343 |             if Items[i].Level > 0 then Items[i].Expanded := False else Items[i].Expanded := True;
 | 
|---|
| 344 |           TopItem  := Items[LastNode] ;
 | 
|---|
| 345 |           Changing := True;
 | 
|---|
| 346 |           Selected := Items[LastNode] ;
 | 
|---|
| 347 |           Changing := False;
 | 
|---|
| 348 |           SendMessage(Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
 | 
|---|
| 349 |         end ;
 | 
|---|
| 350 |       if QuickList.Count > 0 then with cboService do
 | 
|---|
| 351 |         begin
 | 
|---|
| 352 |           Items.Assign(QuickList);
 | 
|---|
| 353 |           Items.Add(LLS_LINE);
 | 
|---|
| 354 |           Items.Add(LLS_SPACE);
 | 
|---|
| 355 |         end;
 | 
|---|
| 356 |       Changing := True;
 | 
|---|
| 357 |       for i := 0 to AList.Count - 1 do
 | 
|---|
| 358 |         if (cboService.Items.IndexOf(Trim(Piece(AList.Strings[i], U, 2))) = -1) and   {RV}
 | 
|---|
| 359 |         //if (cboService.SelectByID(Piece(AList.Strings[i], U, 1)) = -1) and
 | 
|---|
| 360 |            (Piece(AList.Strings[i], U, 5) <> '1') then
 | 
|---|
| 361 |           cboService.Items.Add(AList.Strings[i]);
 | 
|---|
| 362 |       cboService.ItemIndex := 0;
 | 
|---|
| 363 |       Changing := False;
 | 
|---|
| 364 |       if treService.Selected <> nil then
 | 
|---|
| 365 |         begin
 | 
|---|
| 366 |           if (TORTreeNode(treService.Selected).StringData <> '') and
 | 
|---|
| 367 |              (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
 | 
|---|
| 368 |             cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
 | 
|---|
| 369 |             //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
 | 
|---|
| 370 |           else
 | 
|---|
| 371 |             cboService.ItemIndex := -1;
 | 
|---|
| 372 |         end
 | 
|---|
| 373 |       else
 | 
|---|
| 374 |         cboService.ItemIndex := -1;
 | 
|---|
| 375 |       if cboService.ItemIEN > 0 then
 | 
|---|
| 376 |         begin
 | 
|---|
| 377 |           if not ShowPrerequisites then
 | 
|---|
| 378 |             begin
 | 
|---|
| 379 |               Close;
 | 
|---|
| 380 |               Exit;
 | 
|---|
| 381 |             end;
 | 
|---|
| 382 |           memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 383 |         end;
 | 
|---|
| 384 |       PreserveControl(treService);
 | 
|---|
| 385 |       PreserveControl(cboService);
 | 
|---|
| 386 |     end;
 | 
|---|
| 387 |   finally
 | 
|---|
| 388 |     AList.Free;
 | 
|---|
| 389 |   end;
 | 
|---|
| 390 | end;
 | 
|---|
| 391 | 
 | 
|---|
| 392 | procedure TfrmODCslt.Validate(var AnErrMsg: string);
 | 
|---|
| 393 | 
 | 
|---|
| 394 |   procedure SetError(const x: string);
 | 
|---|
| 395 |   begin
 | 
|---|
| 396 |     if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
 | 
|---|
| 397 |     AnErrMsg := AnErrMsg + x;
 | 
|---|
| 398 |   end;
 | 
|---|
| 399 | 
 | 
|---|
| 400 | begin
 | 
|---|
| 401 |   SetupVars;  //kt added 8/8/2007 to replace constants with vars.
 | 
|---|
| 402 |   inherited;
 | 
|---|
| 403 |   if (not ContainsVisibleChar(memReason.Text)) then SetError(TX_NO_REASON);
 | 
|---|
| 404 |   if cboUrgency.ItemIEN = 0 then SetError(TX_NO_URGENCY);
 | 
|---|
| 405 |   if cboPlace.ItemID = '' then SetError(TX_NO_PLACE);
 | 
|---|
| 406 |   if cboService.ItemIEN = 0 then
 | 
|---|
| 407 |     SetError(TX_NO_SVC)
 | 
|---|
| 408 |   else
 | 
|---|
| 409 |     begin
 | 
|---|
| 410 |       if Piece(cboService.Items[cboService.ItemIndex],U,5) = '1' then SetError(TX_NOTTHISSVC_TEXT);
 | 
|---|
| 411 |       if (Piece(cboService.Items[cboService.ItemIndex],U,5) <> '1')
 | 
|---|
| 412 |          and (Piece(cboService.Items[cboService.ItemIndex],U,6) = '')
 | 
|---|
| 413 |                                               then SetError(TX_SVC_ERROR) ;
 | 
|---|
| 414 |     end;
 | 
|---|
| 415 |   if (ProvDx.Reqd = 'R') and (not ContainsVisibleChar(txtProvDiag.Text)) then
 | 
|---|
| 416 |     begin
 | 
|---|
| 417 |       if ProvDx.PromptMode = 'F' then
 | 
|---|
| 418 |         SetError(TX_NO_DIAG)
 | 
|---|
| 419 |       else
 | 
|---|
| 420 |         SetError(TX_SELECT_DIAG);
 | 
|---|
| 421 |     end;
 | 
|---|
| 422 | end;
 | 
|---|
| 423 | 
 | 
|---|
| 424 | procedure TfrmODCslt.txtAttnNeedData(Sender: TObject;
 | 
|---|
| 425 |   const StartFrom: string; Direction, InsertAt: Integer);
 | 
|---|
| 426 | begin
 | 
|---|
| 427 |   inherited;
 | 
|---|
| 428 |   txtAttn.ForDataUse(SubSetOfPersons(StartFrom, Direction));
 | 
|---|
| 429 | end;
 | 
|---|
| 430 | 
 | 
|---|
| 431 | procedure TfrmODCslt.radInpatientClick(Sender: TObject);
 | 
|---|
| 432 | begin
 | 
|---|
| 433 |   inherited;
 | 
|---|
| 434 |   with CtrlInits do
 | 
|---|
| 435 |   begin
 | 
|---|
| 436 |     SetControl(cboPlace, 'Inpt Place');
 | 
|---|
| 437 |     SetControl(cboUrgency, 'Inpt Cslt Urgencies');
 | 
|---|
| 438 |     cboCategory.Items.Clear;
 | 
|---|
| 439 |     cboCategory.Items.Add('I^Inpatient') ;
 | 
|---|
| 440 |     cboCategory.SelectById('I');
 | 
|---|
| 441 |   end ;
 | 
|---|
| 442 |   ControlChange(Self);
 | 
|---|
| 443 | end;
 | 
|---|
| 444 | 
 | 
|---|
| 445 | procedure TfrmODCslt.radOutpatientClick(Sender: TObject);
 | 
|---|
| 446 | begin
 | 
|---|
| 447 |   inherited;
 | 
|---|
| 448 |   with CtrlInits do
 | 
|---|
| 449 |   begin
 | 
|---|
| 450 |     SetControl(cboPlace, 'Outpt Place');
 | 
|---|
| 451 |     SetControl(cboUrgency, 'Outpt Urgencies');
 | 
|---|
| 452 |     cboCategory.Items.Clear;
 | 
|---|
| 453 |     cboCategory.Items.Add('O^Outpatient');
 | 
|---|
| 454 |     cboCategory.SelectById('O');
 | 
|---|
| 455 |   end ;
 | 
|---|
| 456 |   ControlChange(Self);
 | 
|---|
| 457 | end;
 | 
|---|
| 458 | 
 | 
|---|
| 459 | procedure TfrmODCslt.BuildQuickTree(QuickList: TStrings; const Parent: string; Node: TTreeNode);
 | 
|---|
| 460 | var
 | 
|---|
| 461 |   i: Integer;
 | 
|---|
| 462 |   QuickInfo, Name: string ;
 | 
|---|
| 463 |   ANode: TTreeNode;
 | 
|---|
| 464 | begin
 | 
|---|
| 465 |   with QuickList do
 | 
|---|
| 466 |     begin
 | 
|---|
| 467 | //    Node := treService.Items.AddChildObject(Node, 'Quick Orders', nil);  <-- original line.  //kt 8/8/2007
 | 
|---|
| 468 |       Node := treService.Items.AddChildObject(Node, DKLangConstW('fODConsult_Quick_Orders'), nil); //kt added 8/8/2007
 | 
|---|
| 469 |       for i := 0 to Count - 1 do
 | 
|---|
| 470 |        begin
 | 
|---|
| 471 |         Name        := Piece(Strings[i], U, 2);
 | 
|---|
| 472 |         QuickInfo   := Strings[i];
 | 
|---|
| 473 |         ANode := treService.Items.AddChildObject(Node, Name, Pointer(QuickInfo));
 | 
|---|
| 474 |         TORTreeNode(ANode).StringData := QuickInfo;
 | 
|---|
| 475 |        end;
 | 
|---|
| 476 |     end;
 | 
|---|
| 477 | end;
 | 
|---|
| 478 | 
 | 
|---|
| 479 | procedure TfrmODCslt.treServiceChange(Sender: TObject; Node: TTreeNode);
 | 
|---|
| 480 | var
 | 
|---|
| 481 |   i: integer;
 | 
|---|
| 482 |   tmpSvc: string;
 | 
|---|
| 483 | begin
 | 
|---|
| 484 |   SetupVars;  //kt added 8/8/2007 to replace constants with vars.
 | 
|---|
| 485 |   inherited;
 | 
|---|
| 486 |   pnlMessage.Visible := False;
 | 
|---|
| 487 |   if Changing or (treService.Selected = nil)
 | 
|---|
| 488 |      or FKeyBoarding or FcboServiceKeyDownStopClick then exit;
 | 
|---|
| 489 |   Changing := True;
 | 
|---|
| 490 |   with cboService do
 | 
|---|
| 491 |    begin
 | 
|---|
| 492 |     if treService.Selected <> nil then
 | 
|---|
| 493 |       begin
 | 
|---|
| 494 |         if (TORTreeNode(treService.Selected).StringData <> '') and
 | 
|---|
| 495 |            (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
 | 
|---|
| 496 |           cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
 | 
|---|
| 497 |           //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
 | 
|---|
| 498 |         else
 | 
|---|
| 499 |           begin
 | 
|---|
| 500 |             pnlMessage.TabOrder := treService.TabOrder + 1;
 | 
|---|
| 501 |             OrderMessage(TX_GROUPER);
 | 
|---|
| 502 |             cboService.ItemIndex := -1;
 | 
|---|
| 503 |             Changing := False;
 | 
|---|
| 504 |             Exit;
 | 
|---|
| 505 |           end;
 | 
|---|
| 506 |       end
 | 
|---|
| 507 |     else
 | 
|---|
| 508 |       ItemIndex := -1;
 | 
|---|
| 509 | (*    if (treService.Selected.Data <> nil) then
 | 
|---|
| 510 |       SelectByID(Piece(string(treService.Selected.Data), U, 1))
 | 
|---|
| 511 |     else
 | 
|---|
| 512 |       ItemIndex := -1;*)
 | 
|---|
| 513 |     Changing := False;
 | 
|---|
| 514 |     if ItemIndex < 0 then exit;
 | 
|---|
| 515 |     if Piece(Items[ItemIndex],U,5) = '1' then
 | 
|---|
| 516 |       begin
 | 
|---|
| 517 |         Responses.Update('ORDERABLE', 1, '', '');
 | 
|---|
| 518 |         memOrder.Clear;
 | 
|---|
| 519 |         cboService.ItemIndex := -1;
 | 
|---|
| 520 |         FLastServiceID := '';
 | 
|---|
| 521 |         Changing := True;
 | 
|---|
| 522 |         treService.Selected := nil;
 | 
|---|
| 523 |         Changing := False;
 | 
|---|
| 524 |         pnlMessage.TabOrder := treService.TabOrder + 1;
 | 
|---|
| 525 |         OrderMessage(TX_GROUPER);
 | 
|---|
| 526 |         Exit;
 | 
|---|
| 527 |       end;
 | 
|---|
| 528 |     treService.Visible := False;
 | 
|---|
| 529 |     memReason.Clear;
 | 
|---|
| 530 |     if ItemID <> FLastServiceID then FLastServiceID := ItemID else Exit;
 | 
|---|
| 531 |     Changing := True;
 | 
|---|
| 532 |     if Sender <> Self then
 | 
|---|
| 533 |       Responses.Clear;       // Sender=Self when called from SetupDialog
 | 
|---|
| 534 |     Changing := False;
 | 
|---|
| 535 |     if CharAt(ItemID, 1) = 'Q' then
 | 
|---|
| 536 |       begin
 | 
|---|
| 537 |         Changing := True;
 | 
|---|
| 538 |         consultQuickOrder := True;   
 | 
|---|
| 539 |         Responses.QuickOrder := ExtractInteger(ItemID);
 | 
|---|
| 540 |         tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
 | 
|---|
| 541 |         with treService do for i := 0 to Items.Count-1 do
 | 
|---|
| 542 |           begin
 | 
|---|
| 543 |             if Piece(TORTreeNode(Items[i]).StringData, U, 6) = tmpSvc then
 | 
|---|
| 544 |               begin
 | 
|---|
| 545 |                 Selected := Items[i];
 | 
|---|
| 546 |                 break;
 | 
|---|
| 547 |               end;
 | 
|---|
| 548 |           end;
 | 
|---|
| 549 |         if treService.Selected <> nil then
 | 
|---|
| 550 |           begin
 | 
|---|
| 551 |             if (TORTreeNode(treService.Selected).StringData <> '') and
 | 
|---|
| 552 |                (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
 | 
|---|
| 553 |                  cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
 | 
|---|
| 554 |               //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
 | 
|---|
| 555 |             else
 | 
|---|
| 556 |               cboService.ItemIndex := -1;
 | 
|---|
| 557 |           end
 | 
|---|
| 558 |         else
 | 
|---|
| 559 |           cboService.ItemIndex := -1;
 | 
|---|
| 560 |         FLastServiceID := ItemID;
 | 
|---|
| 561 |         cboService.Enabled := False;
 | 
|---|
| 562 |         cboService.Font.Color := clGrayText;
 | 
|---|
| 563 |         btnServiceTree.Enabled := False;
 | 
|---|
| 564 |         pnlServiceTreeButton.Enabled := False;
 | 
|---|
| 565 |         Changing := False;
 | 
|---|
| 566 |       end;
 | 
|---|
| 567 |    end;
 | 
|---|
| 568 |   with Responses do if QuickOrder > 0 then
 | 
|---|
| 569 |     begin
 | 
|---|
| 570 |       tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
 | 
|---|
| 571 |       with treService do for i := 0 to Items.Count-1 do
 | 
|---|
| 572 |         begin
 | 
|---|
| 573 |           if Piece(TORTreeNode(Items[i]).StringData, U, 6) = tmpSvc then
 | 
|---|
| 574 |             begin
 | 
|---|
| 575 |               Selected := Items[i];
 | 
|---|
| 576 |               break;
 | 
|---|
| 577 |             end;
 | 
|---|
| 578 |         end;
 | 
|---|
| 579 |       if treService.Selected <> nil then
 | 
|---|
| 580 |         begin
 | 
|---|
| 581 |           if (TORTreeNode(treService.Selected).StringData <> '') and
 | 
|---|
| 582 |              (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
 | 
|---|
| 583 |                 cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
 | 
|---|
| 584 |             //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
 | 
|---|
| 585 |           else
 | 
|---|
| 586 |             cboService.ItemIndex := -1;
 | 
|---|
| 587 |         end
 | 
|---|
| 588 |       else
 | 
|---|
| 589 |         cboService.ItemIndex := -1;
 | 
|---|
| 590 |       Changing := True;
 | 
|---|
| 591 |       if not ShowPrerequisites then
 | 
|---|
| 592 |         begin
 | 
|---|
| 593 |           Close;
 | 
|---|
| 594 |           Exit;
 | 
|---|
| 595 |         end;
 | 
|---|
| 596 |       SetControl(cboCategory,   'CLASS',      1);
 | 
|---|
| 597 |       if cboCategory.ItemID = 'I' then radInpatient.Checked := True
 | 
|---|
| 598 |       else radOutpatient.Checked := True ;
 | 
|---|
| 599 |       SetControl(cboUrgency,    'URGENCY',     1);
 | 
|---|
| 600 |       SetControl(cboPlace,      'PLACE',     1);
 | 
|---|
| 601 |       SetControl(txtAttn,       'PROVIDER',  1);
 | 
|---|
| 602 |       SetControl(memReason,     'COMMENT',   1);
 | 
|---|
| 603 |       if ((cboService.ItemIEN > 0) and (Length(memReason.Text) = 0)) then
 | 
|---|
| 604 |         memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 605 |       SetupReasonForRequest(ORDER_QUICK);
 | 
|---|
| 606 |       GetProvDxandValidateCode(Responses);
 | 
|---|
| 607 |       Changing := False;
 | 
|---|
| 608 |     end
 | 
|---|
| 609 |   else
 | 
|---|
| 610 |     begin
 | 
|---|
| 611 |       if cboService.ItemIEN > 0 then
 | 
|---|
| 612 |         begin
 | 
|---|
| 613 |           if not ShowPrerequisites then
 | 
|---|
| 614 |             begin
 | 
|---|
| 615 |               Close;
 | 
|---|
| 616 |               Exit;
 | 
|---|
| 617 |             end;
 | 
|---|
| 618 |           memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 619 |           SetupReasonForRequest(ORDER_NEW);
 | 
|---|
| 620 |         end;
 | 
|---|
| 621 |     end;
 | 
|---|
| 622 |   SetProvDiagPromptingMode;
 | 
|---|
| 623 |   tmpSvc := Piece(cboService.Items[cboService.ItemIndex], U, 6);
 | 
|---|
| 624 |   pnlMessage.TabOrder := treService.TabOrder + 1;
 | 
|---|
| 625 |   OrderMessage(ConsultMessage(StrToIntDef(tmpSvc, 0)));
 | 
|---|
| 626 |   //OrderMessage(ConsultMessage(cboService.ItemIEN));
 | 
|---|
| 627 |   ControlChange(Self) ;
 | 
|---|
| 628 | end;
 | 
|---|
| 629 | 
 | 
|---|
| 630 | procedure TfrmODCslt.ControlChange(Sender: TObject);
 | 
|---|
| 631 | var
 | 
|---|
| 632 |   x: string;
 | 
|---|
| 633 |   i: integer;
 | 
|---|
| 634 | begin
 | 
|---|
| 635 |   inherited;
 | 
|---|
| 636 |   if Changing or (cboService.ItemIEN = 0) then Exit;
 | 
|---|
| 637 |   with cboService    do
 | 
|---|
| 638 |     begin
 | 
|---|
| 639 |       if (ItemIEN > 0) and (Piece(Items[ItemIndex], U, 5) <> '1') then
 | 
|---|
| 640 |         begin
 | 
|---|
| 641 |           i := Pos('<', Text);
 | 
|---|
| 642 |           if i > 0 then
 | 
|---|
| 643 |             begin
 | 
|---|
| 644 |               x := Piece(Copy(Text, i + 1, 99), '>', 1);
 | 
|---|
| 645 |               x := UpperCase(Copy(x, 1, 1)) + Copy(x, 2, 99);
 | 
|---|
| 646 |             end
 | 
|---|
| 647 |           else
 | 
|---|
| 648 |             x := Text;
 | 
|---|
| 649 |           Responses.Update('ORDERABLE', 1, Piece(Items[ItemIndex], U, 6), x);
 | 
|---|
| 650 |         end
 | 
|---|
| 651 |       else Responses.Update('ORDERABLE', 1, '', '');
 | 
|---|
| 652 |     end;
 | 
|---|
| 653 |   with memReason     do if GetTextLen   > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
 | 
|---|
| 654 |   with cboCategory   do if ItemID     <> '' then Responses.Update('CLASS',     1, ItemID, Text);
 | 
|---|
| 655 |   with cboUrgency    do if ItemIEN      > 0 then Responses.Update('URGENCY',   1, ItemID, Text);
 | 
|---|
| 656 |   with cboPlace      do if ItemID     <> '' then Responses.Update('PLACE',     1, ItemID, Text);
 | 
|---|
| 657 |   with txtAttn       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
 | 
|---|
| 658 |   //with txtProvDiag   do if Length(Text) > 0 then Responses.Update('MISC',      1, Text,   Text);
 | 
|---|
| 659 |   if Length(ProvDx.Text)                > 0 then Responses.Update('MISC',      1, ProvDx.Text,   ProvDx.Text)
 | 
|---|
| 660 |    else Responses.Update('MISC',      1, '',   '');
 | 
|---|
| 661 |   if Length(ProvDx.Code)                > 0 then Responses.Update('CODE',      1, ProvDx.Code,   ProvDx.Code)
 | 
|---|
| 662 |    else Responses.Update('CODE',      1, '',   '');
 | 
|---|
| 663 | 
 | 
|---|
| 664 |   memOrder.Text := Responses.OrderText;
 | 
|---|
| 665 | end;
 | 
|---|
| 666 | 
 | 
|---|
| 667 | procedure TfrmODCslt.treServiceExit(Sender: TObject);
 | 
|---|
| 668 | begin
 | 
|---|
| 669 |   inherited;
 | 
|---|
| 670 |   with cboService do
 | 
|---|
| 671 |   begin
 | 
|---|
| 672 |     if ItemIEN > 0 then
 | 
|---|
| 673 |     begin
 | 
|---|
| 674 |       pnlMessage.TabOrder := treService.TabOrder + 1;
 | 
|---|
| 675 |       OrderMessage(ConsultMessage(StrToInt(Piece(Items[ItemIndex],U,6))));
 | 
|---|
| 676 |     end;
 | 
|---|
| 677 |   end;
 | 
|---|
| 678 | end;
 | 
|---|
| 679 | 
 | 
|---|
| 680 | procedure TfrmODCslt.SetUpQuickOrderDX;
 | 
|---|
| 681 | // this procedure is called if the user selects a quick code from the list
 | 
|---|
| 682 | // and accepts the order without entering or selection the diagnoses button.
 | 
|---|
| 683 | begin
 | 
|---|
| 684 |    quickCode := ProvDx.Code;
 | 
|---|
| 685 |    if UBACore.IsICD9CodeActive(quickCode,'ICD',0) then
 | 
|---|
| 686 |    begin
 | 
|---|
| 687 |       uBAGlobals.BAConsultDxList.Clear;
 | 
|---|
| 688 |       uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + ProvDx.Text + ':' +  quickCode);
 | 
|---|
| 689 |    end;
 | 
|---|
| 690 | 
 | 
|---|
| 691 | end;
 | 
|---|
| 692 | 
 | 
|---|
| 693 | procedure TfrmODCslt.cmdAcceptClick(Sender: TObject);
 | 
|---|
| 694 | var
 | 
|---|
| 695 |   BADiagnosis: string;
 | 
|---|
| 696 |  begin
 | 
|---|
| 697 |  inherited;
 | 
|---|
| 698 |  if treService.Selected <> nil then
 | 
|---|
| 699 |     LastNode := treService.Selected.AbsoluteIndex;
 | 
|---|
| 700 | 
 | 
|---|
| 701 |  if  BILLING_AWARE and CIDCOkToSave  then
 | 
|---|
| 702 |  begin
 | 
|---|
| 703 |     if btnDiagnosis.Enabled then
 | 
|---|
| 704 |       if consultQuickOrder then SetUpQuickOrderDX;
 | 
|---|
| 705 |        if UBAGlobals.BAConsultDxList.Count > 0 then
 | 
|---|
| 706 |        begin
 | 
|---|
| 707 |           uBACore.CompleteConsultOrderRec(uBAGlobals.BAOrderID,UBAGlobals.BAConsultDxList);
 | 
|---|
| 708 |           uBAGlobals.BAConsultDxList.Clear;
 | 
|---|
| 709 |        end;
 | 
|---|
| 710 |     BADiagnosis := ProvDx.Text + '^' + ProvDx.Code;
 | 
|---|
| 711 |  end;
 | 
|---|
| 712 | 
 | 
|---|
| 713 |  if NOT BILLING_AWARE then
 | 
|---|
| 714 |  begin
 | 
|---|
| 715 |    // this will save a dx entered by a nurse to be reviewed by a provided.
 | 
|---|
| 716 |    // this is active if CIDC MASTER SWITCH is ON.
 | 
|---|
| 717 |      if rpcGetBAMasterSwStatus then   // BA master sw is on.
 | 
|---|
| 718 |       if (uCore.User.OrderRole = OR_NURSE) then   // user is a nurse
 | 
|---|
| 719 |      begin
 | 
|---|
| 720 |         if ProvDx.Text <> '' then   // consult dx has been selected
 | 
|---|
| 721 |         begin
 | 
|---|
| 722 |             SaveConsultDxForNurse(ProvDx.Text + ProvDx.Code); // save selected dx, will be displayed to Provider
 | 
|---|
| 723 |         end;
 | 
|---|
| 724 |      end;
 | 
|---|
| 725 |  end;
 | 
|---|
| 726 | end;
 | 
|---|
| 727 | 
 | 
|---|
| 728 | procedure TfrmODCslt.memReasonExit(Sender: TObject);
 | 
|---|
| 729 | var
 | 
|---|
| 730 |   AStringList: TStringList;
 | 
|---|
| 731 | begin
 | 
|---|
| 732 |   inherited;
 | 
|---|
| 733 |   AStringList := TStringList.Create;
 | 
|---|
| 734 |   try
 | 
|---|
| 735 |     AStringList.Assign(memReason.Lines);
 | 
|---|
| 736 |     LimitStringLength(AStringList, 74);
 | 
|---|
| 737 |     memReason.Lines.Assign(AstringList);
 | 
|---|
| 738 |     ControlChange(Self);
 | 
|---|
| 739 |   finally
 | 
|---|
| 740 |     AStringList.Free;
 | 
|---|
| 741 |   end;
 | 
|---|
| 742 | end;
 | 
|---|
| 743 | 
 | 
|---|
| 744 | procedure TfrmODCslt.cboServiceSelect(Sender: TObject);
 | 
|---|
| 745 | var
 | 
|---|
| 746 |   tmpSvc: string;
 | 
|---|
| 747 | begin
 | 
|---|
| 748 |   SetupVars;  //kt added 8/8/2007 to replace constants with vars.
 | 
|---|
| 749 |   if FcboServiceKeyDownStopClick then
 | 
|---|
| 750 |   begin
 | 
|---|
| 751 |     Exit; //This fixes clearquest: HDS00001418
 | 
|---|
| 752 |     FcboServiceKeyDownStopClick := false;
 | 
|---|
| 753 |   end;
 | 
|---|
| 754 |   memReason.Clear;
 | 
|---|
| 755 |   with cboService do
 | 
|---|
| 756 |     begin
 | 
|---|
| 757 |       if (ItemIndex < 0) or (ItemID = '') then
 | 
|---|
| 758 |         begin
 | 
|---|
| 759 |           Responses.Update('ORDERABLE', 1, '', '');
 | 
|---|
| 760 |           memOrder.Clear;
 | 
|---|
| 761 |           FLastServiceID := '';
 | 
|---|
| 762 |           exit;
 | 
|---|
| 763 |         end;
 | 
|---|
| 764 |       if Piece(Items[ItemIndex],U,5) = '1' then
 | 
|---|
| 765 |         begin
 | 
|---|
| 766 |           Responses.Update('ORDERABLE', 1, '', '');
 | 
|---|
| 767 |           memOrder.Clear;
 | 
|---|
| 768 |           FLastServiceID := '';
 | 
|---|
| 769 |           pnlMessage.TabOrder := cboService.TabOrder + 1;
 | 
|---|
| 770 |           OrderMessage(TX_GROUPER);
 | 
|---|
| 771 |           Exit;
 | 
|---|
| 772 |         end;
 | 
|---|
| 773 |       FLastServiceID := ItemID;
 | 
|---|
| 774 |       if CharAt(ItemID, 1) = 'Q' then
 | 
|---|
| 775 |         begin
 | 
|---|
| 776 |           Changing := True;
 | 
|---|
| 777 |           Responses.QuickOrder := ExtractInteger(ItemID);
 | 
|---|
| 778 |           consultQuickOrder := True;   
 | 
|---|
| 779 |           tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).EValue;
 | 
|---|
| 780 |           ItemIndex := Items.IndexOf(Trim(tmpSvc));
 | 
|---|
| 781 | (*          tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
 | 
|---|
| 782 |           for i := 0 to Items.Count-1 do
 | 
|---|
| 783 |             begin
 | 
|---|
| 784 |               if Piece(Items[i],U,6) = tmpSvc then
 | 
|---|
| 785 |                 begin
 | 
|---|
| 786 |                   ItemIndex := i;
 | 
|---|
| 787 |                   break;
 | 
|---|
| 788 |                 end;
 | 
|---|
| 789 |             end;*)
 | 
|---|
| 790 |           FLastServiceID := ItemID;
 | 
|---|
| 791 |           Enabled := False;
 | 
|---|
| 792 |           Font.Color := clGrayText;
 | 
|---|
| 793 |           btnServiceTree.Enabled := False;
 | 
|---|
| 794 |           pnlServiceTreeButton.Enabled := False;
 | 
|---|
| 795 |           Changing := False;
 | 
|---|
| 796 |           with Responses do if QuickOrder > 0 then
 | 
|---|
| 797 |             begin
 | 
|---|
| 798 |               Changing := True;
 | 
|---|
| 799 |               if not ShowPrerequisites then
 | 
|---|
| 800 |                 begin
 | 
|---|
| 801 |                   Close;
 | 
|---|
| 802 |                   Exit;
 | 
|---|
| 803 |                 end;
 | 
|---|
| 804 |               SetControl(cboCategory,   'CLASS',      1);
 | 
|---|
| 805 |               if cboCategory.ItemID = 'I' then radInpatient.Checked := True
 | 
|---|
| 806 |               else radOutpatient.Checked := True ;
 | 
|---|
| 807 |               SetControl(cboUrgency,    'URGENCY',     1);
 | 
|---|
| 808 |               SetControl(cboPlace,      'PLACE',     1);
 | 
|---|
| 809 |               SetControl(txtAttn,       'PROVIDER',  1);
 | 
|---|
| 810 |               SetControl(memReason,     'COMMENT',   1);
 | 
|---|
| 811 | //              if ((cboService.ItemIEN > 0) and (Length(memReason.Text) = 0)) then
 | 
|---|
| 812 | //                memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 813 |               SetupReasonForRequest(ORDER_QUICK);
 | 
|---|
| 814 |               GetProvDxandValidateCode(Responses);
 | 
|---|
| 815 |               Changing := False;
 | 
|---|
| 816 |             end
 | 
|---|
| 817 |           else
 | 
|---|
| 818 |             begin
 | 
|---|
| 819 |               if cboService.ItemIEN > 0 then
 | 
|---|
| 820 |                 begin
 | 
|---|
| 821 |                   Changing := True;
 | 
|---|
| 822 |                   if not ShowPrerequisites then
 | 
|---|
| 823 |                     begin
 | 
|---|
| 824 |                       Close;
 | 
|---|
| 825 |                       Exit;
 | 
|---|
| 826 |                     end;
 | 
|---|
| 827 |                   memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 828 |                   SetupReasonForRequest(ORDER_NEW);
 | 
|---|
| 829 |                   Changing := False;
 | 
|---|
| 830 |                 end;
 | 
|---|
| 831 |             end;
 | 
|---|
| 832 |         end
 | 
|---|
| 833 |       else
 | 
|---|
| 834 |         begin
 | 
|---|
| 835 |           Changing := True;
 | 
|---|
| 836 |           if not ShowPrerequisites then
 | 
|---|
| 837 |             begin
 | 
|---|
| 838 |               Close;
 | 
|---|
| 839 |               Exit;
 | 
|---|
| 840 |             end;
 | 
|---|
| 841 |           QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
 | 
|---|
| 842 |           SetupReasonForRequest(ORDER_NEW);
 | 
|---|
| 843 |           Changing := False;
 | 
|---|
| 844 |         end;
 | 
|---|
| 845 |       end;
 | 
|---|
| 846 |   treService.Visible := False;
 | 
|---|
| 847 |   SetProvDiagPromptingMode;
 | 
|---|
| 848 |   tmpSvc := Piece(cboService.Items[cboService.ItemIndex], U, 6);
 | 
|---|
| 849 |   pnlMessage.TabOrder := cboService.TabOrder + 1;
 | 
|---|
| 850 |   OrderMessage(ConsultMessage(StrToIntDef(tmpSvc, 0)));
 | 
|---|
| 851 |   //OrderMessage(ConsultMessage(cboService.ItemIEN));
 | 
|---|
| 852 |   ControlChange(Self) ;
 | 
|---|
| 853 | end;
 | 
|---|
| 854 | 
 | 
|---|
| 855 | procedure TfrmODCslt.FormDestroy(Sender: TObject);
 | 
|---|
| 856 | begin
 | 
|---|
| 857 |   Defaults.Free;
 | 
|---|
| 858 |   SvcList.Free ;
 | 
|---|
| 859 |   QuickList.Free;
 | 
|---|
| 860 |   inherited;
 | 
|---|
| 861 | end;
 | 
|---|
| 862 | 
 | 
|---|
| 863 | procedure TfrmODCslt.btnServiceTreeClick(Sender: TObject);
 | 
|---|
| 864 | var
 | 
|---|
| 865 |   i: integer;
 | 
|---|
| 866 | begin
 | 
|---|
| 867 |   inherited;
 | 
|---|
| 868 |   Changing := True;
 | 
|---|
| 869 |   treService.Visible := not treService.Visible;
 | 
|---|
| 870 |   if treService.Visible then
 | 
|---|
| 871 |   begin
 | 
|---|
| 872 |     treService.SetFocus;
 | 
|---|
| 873 |     with treService do for i := 0 to Items.Count-1 do
 | 
|---|
| 874 |     begin
 | 
|---|
| 875 |       if Piece(TORTreeNode(Items[i]).StringData, U, 1) = cboService.ItemID then
 | 
|---|
| 876 |         begin
 | 
|---|
| 877 |           Selected := Items[i];
 | 
|---|
| 878 |           if Piece(TORTreeNode(Items[i]).StringData, U, 5) = '1' then Selected.Expand(True);
 | 
|---|
| 879 |           break;
 | 
|---|
| 880 |         end;
 | 
|---|
| 881 |     end;
 | 
|---|
| 882 |   end;
 | 
|---|
| 883 |   Changing := False;
 | 
|---|
| 884 | end;
 | 
|---|
| 885 | 
 | 
|---|
| 886 | procedure  TfrmODCslt.ReadServerVariables;
 | 
|---|
| 887 | begin
 | 
|---|
| 888 |   if StrToIntDef(KeyVariable['GMRCNOAT'], 0) > 0 then
 | 
|---|
| 889 |     begin
 | 
|---|
| 890 |       txtAttn.Enabled    := False;
 | 
|---|
| 891 |       txtAttn.Font.Color := clGrayText;
 | 
|---|
| 892 |       lblAttn.Enabled    := False;
 | 
|---|
| 893 |       txtAttn.Color      := clBtnFace;
 | 
|---|
| 894 |     end
 | 
|---|
| 895 |   else
 | 
|---|
| 896 |     begin
 | 
|---|
| 897 |       txtAttn.Enabled    := True;
 | 
|---|
| 898 |       txtAttn.Font.Color := clWindowText;
 | 
|---|
| 899 |       lblAttn.Enabled    := True;
 | 
|---|
| 900 |       txtAttn.Color      := clWindow;
 | 
|---|
| 901 |     end;
 | 
|---|
| 902 | 
 | 
|---|
| 903 |   if StrToIntDef(KeyVariable['GMRCNOPD'], 0) > 0 then
 | 
|---|
| 904 |     begin
 | 
|---|
| 905 |       if BILLING_AWARE then
 | 
|---|
| 906 |          btnDiagnosis.Enabled   := False //1.4.18
 | 
|---|
| 907 |       else
 | 
|---|
| 908 |          cmdLexSearch.Enabled   := False;
 | 
|---|
| 909 |       txtProvDiag.Enabled    := False;
 | 
|---|
| 910 |       txtProvDiag.Font.Color := clGrayText;
 | 
|---|
| 911 |       lblProvDiag.Enabled    := False;
 | 
|---|
| 912 |       txtProvDiag.ReadOnly   := True;
 | 
|---|
| 913 |       txtProvDiag.Color      := clBtnFace;
 | 
|---|
| 914 |     end
 | 
|---|
| 915 |   else SetProvDiagPromptingMode;
 | 
|---|
| 916 | 
 | 
|---|
| 917 |   GMRCREAF := KeyVariable['GMRCREAF'];
 | 
|---|
| 918 | end;
 | 
|---|
| 919 | 
 | 
|---|
| 920 | procedure TfrmODCslt.treServiceCollapsing(Sender: TObject; Node: TTreeNode;
 | 
|---|
| 921 |   var AllowCollapse: Boolean);
 | 
|---|
| 922 | begin
 | 
|---|
| 923 |   inherited;
 | 
|---|
| 924 |   Changing := True;
 | 
|---|
| 925 |   treService.Selected := nil;
 | 
|---|
| 926 |   Changing := False;
 | 
|---|
| 927 |   AllowCollapse := True;
 | 
|---|
| 928 | end;
 | 
|---|
| 929 | 
 | 
|---|
| 930 | procedure TfrmODCslt.treServiceMouseDown(Sender: TObject;
 | 
|---|
| 931 |   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 | 
|---|
| 932 | var
 | 
|---|
| 933 |   tmpNode: TORTreeNode;
 | 
|---|
| 934 |   NodeRect: TRect;
 | 
|---|
| 935 | begin
 | 
|---|
| 936 |   inherited;
 | 
|---|
| 937 |   if Button <> mbLeft then exit;
 | 
|---|
| 938 |   tmpNode := TORTreeNode(treService.GetNodeAt(X, Y));
 | 
|---|
| 939 |   if tmpNode = nil then exit;
 | 
|---|
| 940 |   NodeRect := tmpNode.DisplayRect(True);
 | 
|---|
| 941 |   if treService.Selected <> nil then
 | 
|---|
| 942 |     if (X >= NodeRect.Left) then     // user clicked in the text of the item, not on the bitmap
 | 
|---|
| 943 |       begin
 | 
|---|
| 944 |         if tmpNode.StringData <> '' then
 | 
|---|
| 945 |           if (Piece(tmpNode.StringData, U, 5) <> '1') then
 | 
|---|
| 946 |             treService.Visible := False;
 | 
|---|
| 947 |           end;
 | 
|---|
| 948 | end;
 | 
|---|
| 949 | 
 | 
|---|
| 950 | procedure TfrmODCslt.cmdLexSearchClick(Sender: TObject);
 | 
|---|
| 951 | var
 | 
|---|
| 952 |   Match: string;
 | 
|---|
| 953 |   i: integer;
 | 
|---|
| 954 | begin
 | 
|---|
| 955 |   inherited;
 | 
|---|
| 956 | 
 | 
|---|
| 957 |  if  BILLING_AWARE then BADxUpdated := FALSE;
 | 
|---|
| 958 | 
 | 
|---|
| 959 |  LexiconLookup(Match, LX_ICD);
 | 
|---|
| 960 |  if Match = '' then Exit;
 | 
|---|
| 961 |  ProvDx.Code := Piece(Match, U, 1);
 | 
|---|
| 962 |  ProvDx.Text := Piece(Match, U, 2);
 | 
|---|
| 963 |  i := Pos(' (ICD', ProvDx.Text);
 | 
|---|
| 964 |  if i = 0 then i := Length(ProvDx.Text) + 1;
 | 
|---|
| 965 |  if ProvDx.Text[i-1] = '*' then i := i - 2;
 | 
|---|
| 966 |  ProvDx.Text := Copy(ProvDx.Text, 1, i - 1);
 | 
|---|
| 967 |  txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
 | 
|---|
| 968 | 
 | 
|---|
| 969 |  ProvDx.CodeInactive := False;
 | 
|---|
| 970 | end;
 | 
|---|
| 971 | 
 | 
|---|
| 972 | procedure TfrmODCslt.SetProvDiagPromptingMode;
 | 
|---|
| 973 | //const
 | 
|---|
| 974 | //TX_USE_LEXICON = 'You must use the "Lexicon" button to select a provisional diagnosis for this service.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 975 | //TX_USE_DIAGNOSIS = 'You must use the "Diagnosis" button to select a diagnosis for this service.';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 976 | 
 | 
|---|
| 977 | //TX_PROVDX_OPT  = 'Provisional Diagnosis';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 978 | //TX_PROVDX_REQD = 'Provisional Dx (REQUIRED)';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 979 | var
 | 
|---|
| 980 |   TX_USE_LEXICON : string; //kt
 | 
|---|
| 981 |   TX_USE_DIAGNOSIS : string; //kt
 | 
|---|
| 982 |   TX_PROVDX_OPT  : string; //kt
 | 
|---|
| 983 |   TX_PROVDX_REQD : string; //kt
 | 
|---|
| 984 | 
 | 
|---|
| 985 | begin
 | 
|---|
| 986 |   TX_USE_LEXICON := DKLangConstW('fODConsult_You_must_use_the_xLexiconx_button_to_select_a_provisional_diagnosis_for_this_servicex'); //kt added 8/8/2007
 | 
|---|
| 987 |   TX_USE_DIAGNOSIS := DKLangConstW('fODConsult_You_must_use_the_xDiagnosisx_button_to_select_a_diagnosis_for_this_servicex'); //kt added 8/8/2007
 | 
|---|
| 988 |   TX_PROVDX_OPT  := DKLangConstW('fODConsult_Provisional_Diagnosis'); //kt added 8/8/2007
 | 
|---|
| 989 |   TX_PROVDX_REQD := DKLangConstW('fODConsult_Provisional_Dx_xREQUIREDx'); //kt added 8/8/2007
 | 
|---|
| 990 |   if BILLING_AWARE then
 | 
|---|
| 991 |      btnDiagnosis.Enabled    := False //1.4.18
 | 
|---|
| 992 |   else
 | 
|---|
| 993 |      cmdLexSearch.Enabled   := False;
 | 
|---|
| 994 |   txtProvDiag.Enabled    := False;
 | 
|---|
| 995 |   txtProvDiag.ReadOnly   := True;
 | 
|---|
| 996 |   txtProvDiag.Color      := clBtnFace;
 | 
|---|
| 997 |   txtProvDiag.Font.Color := clBtnText;
 | 
|---|
| 998 |   lblProvDiag.Enabled    := False;
 | 
|---|
| 999 |   txtProvDiag.Hint       := '';
 | 
|---|
| 1000 |   if cboService.ItemIEN = 0 then Exit;
 | 
|---|
| 1001 |   GetProvDxMode(ProvDx, cboService.ItemID + CSLT_PTR);
 | 
|---|
| 1002 |   //  Returns:  string  A^B
 | 
|---|
| 1003 |   //     A = O (optional), R (required) or S (suppress)
 | 
|---|
| 1004 |   //     B = F (free-text) or L (lexicon)
 | 
|---|
| 1005 |   with ProvDx do if (Reqd = '') or (PromptMode = '') then Exit;
 | 
|---|
| 1006 |   if ProvDx.Reqd = 'R' then
 | 
|---|
| 1007 |   begin
 | 
|---|
| 1008 |     lblProvDiag.Caption := TX_PROVDX_REQD;
 | 
|---|
| 1009 |     if (BILLING_AWARE)  and (ProvDx.PromptMode[1] = '') then btnDiagnosis.Enabled := True;
 | 
|---|
| 1010 |   end
 | 
|---|
| 1011 |   else
 | 
|---|
| 1012 |     lblProvDiag.Caption := TX_PROVDX_OPT;
 | 
|---|
| 1013 |   if ProvDx.Reqd = 'S' then
 | 
|---|
| 1014 |     begin
 | 
|---|
| 1015 |       cmdLexSearch.Enabled   := False;
 | 
|---|
| 1016 |       txtProvDiag.Enabled    := False;
 | 
|---|
| 1017 |       txtProvDiag.ReadOnly   := True;
 | 
|---|
| 1018 |       txtProvDiag.Color      := clBtnFace;
 | 
|---|
| 1019 |       txtProvDiag.Font.Color := clBtnText;
 | 
|---|
| 1020 |       lblProvDiag.Enabled    := False;
 | 
|---|
| 1021 |     end
 | 
|---|
| 1022 |   else
 | 
|---|
| 1023 |     case ProvDx.PromptMode[1] of
 | 
|---|
| 1024 |       'F':  begin
 | 
|---|
| 1025 |               cmdLexSearch.Enabled   := False;
 | 
|---|
| 1026 |               txtProvDiag.Enabled    := True;
 | 
|---|
| 1027 |               txtProvDiag.ReadOnly   := False;
 | 
|---|
| 1028 |               txtProvDiag.Color      := clWindow;
 | 
|---|
| 1029 |               txtProvDiag.Font.Color := clWindowText;
 | 
|---|
| 1030 |               lblProvDiag.Enabled    := True;
 | 
|---|
| 1031 |             end;
 | 
|---|
| 1032 |       'L':  begin
 | 
|---|
| 1033 |               if BILLING_AWARE then
 | 
|---|
| 1034 |               begin
 | 
|---|
| 1035 |                  btnDiagnosis.Enabled   := True; //1.4.18
 | 
|---|
| 1036 |                  txtProvDiag.Hint       := TX_USE_DIAGNOSIS;
 | 
|---|
| 1037 |               end
 | 
|---|
| 1038 |               else
 | 
|---|
| 1039 |               begin
 | 
|---|
| 1040 |                  cmdLexSearch.Enabled   := True;
 | 
|---|
| 1041 |                  txtProvDiag.Hint       := TX_USE_LEXICON;
 | 
|---|
| 1042 |               end;
 | 
|---|
| 1043 |               txtProvDiag.Enabled    := True;
 | 
|---|
| 1044 |               txtProvDiag.ReadOnly   := True;
 | 
|---|
| 1045 |               txtProvDiag.Color      := clInfoBk;
 | 
|---|
| 1046 |               txtProvDiag.Font.Color := clInfoText;
 | 
|---|
| 1047 |               lblProvDiag.Enabled    := True;
 | 
|---|
| 1048 |            end;
 | 
|---|
| 1049 |     end;
 | 
|---|
| 1050 | end;
 | 
|---|
| 1051 | 
 | 
|---|
| 1052 | 
 | 
|---|
| 1053 | procedure TfrmODCslt.mnuPopProvDxDeleteClick(Sender: TObject);
 | 
|---|
| 1054 | begin
 | 
|---|
| 1055 |   inherited;
 | 
|---|
| 1056 |   ProvDx.Text := '';
 | 
|---|
| 1057 |   ProvDx.Code := '';
 | 
|---|
| 1058 |   txtProvDiag.Text := '';
 | 
|---|
| 1059 |   ControlChange(Self);
 | 
|---|
| 1060 | end;
 | 
|---|
| 1061 | 
 | 
|---|
| 1062 | procedure TfrmODCslt.txtProvDiagChange(Sender: TObject);
 | 
|---|
| 1063 | begin
 | 
|---|
| 1064 |   inherited;
 | 
|---|
| 1065 |   if ProvDx.PromptMode = 'F' then
 | 
|---|
| 1066 |   begin
 | 
|---|
| 1067 |     ProvDx.Text := txtProvDiag.Text;
 | 
|---|
| 1068 |      displayDxCode := ProvDx.Text;
 | 
|---|
| 1069 |   end;
 | 
|---|
| 1070 |   ControlChange(Self);
 | 
|---|
| 1071 | end;
 | 
|---|
| 1072 | 
 | 
|---|
| 1073 | procedure TfrmODCslt.SetupReasonForRequest(OrderAction: integer);
 | 
|---|
| 1074 | var
 | 
|---|
| 1075 |   EditReason: string;
 | 
|---|
| 1076 | 
 | 
|---|
| 1077 |   procedure EnableReason;
 | 
|---|
| 1078 |   begin
 | 
|---|
| 1079 |     memReason.Color := clWindow;
 | 
|---|
| 1080 |     memReason.Font.Color := clWindowText;
 | 
|---|
| 1081 |     memReason.ReadOnly := False;
 | 
|---|
| 1082 | //  lblReason.Caption := 'Reason for Request';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 1083 |     lblReason.Caption := DKLangConstW('fODConsult_Reason_for_Request'); //kt added 8/8/2007
 | 
|---|
| 1084 |   end;
 | 
|---|
| 1085 | 
 | 
|---|
| 1086 |   procedure DisableReason;
 | 
|---|
| 1087 |   begin
 | 
|---|
| 1088 |     memReason.Color := clInfoBk;
 | 
|---|
| 1089 |     memReason.Font.Color := clInfoText;
 | 
|---|
| 1090 |     memReason.ReadOnly := True;
 | 
|---|
| 1091 | //  lblReason.Caption := 'Reason for Request  (not editable)';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 1092 |     lblReason.Caption := DKLangConstW('fODConsult_Reason_for_Request__xnot_editablex'); //kt added 8/8/2007
 | 
|---|
| 1093 |   end;
 | 
|---|
| 1094 | 
 | 
|---|
| 1095 | begin
 | 
|---|
| 1096 |   if ((OrderAction = ORDER_QUICK) and (cboService.ItemID <> '') and (Length(memReason.Text) = 0)) then
 | 
|---|
| 1097 |     memReason.Lines.Assign(DefaultReasonForRequest(cboService.ItemID, True));
 | 
|---|
| 1098 |   EditReason := GMRCREAF;
 | 
|---|
| 1099 |   if EditReason = '' then EditReason := ReasonForRequestEditable(cboService.ItemID + CSLT_PTR);
 | 
|---|
| 1100 |   case EditReason[1] of
 | 
|---|
| 1101 |     '0':  EnableReason;
 | 
|---|
| 1102 |     '1':  if OrderAction in [ORDER_COPY, ORDER_EDIT] then
 | 
|---|
| 1103 |             EnableReason
 | 
|---|
| 1104 |           else
 | 
|---|
| 1105 |             DisableReason;
 | 
|---|
| 1106 |     '2':  DisableReason
 | 
|---|
| 1107 |   else
 | 
|---|
| 1108 |     EnableReason;
 | 
|---|
| 1109 |   end;
 | 
|---|
| 1110 | end;
 | 
|---|
| 1111 | 
 | 
|---|
| 1112 | function TfrmODCslt.ShowPrerequisites: boolean;
 | 
|---|
| 1113 | //const
 | 
|---|
| 1114 | //TC_PREREQUISITES = 'Service Prerequisites - ';  <-- original line.  //kt 8/8/2007
 | 
|---|
| 1115 | var
 | 
|---|
| 1116 |   AList: TStringList;
 | 
|---|
| 1117 |   TC_PREREQUISITES : string; //kt
 | 
|---|
| 1118 | begin
 | 
|---|
| 1119 |   TC_PREREQUISITES := DKLangConstW('fODConsult_Service_Prerequisites_x'); //kt added 8/8/2007
 | 
|---|
| 1120 |   Result := True;
 | 
|---|
| 1121 |   AbortOrder := False;
 | 
|---|
| 1122 |   AList := TStringList.Create;
 | 
|---|
| 1123 |   try
 | 
|---|
| 1124 |     with cboService do
 | 
|---|
| 1125 |       if ItemIEN > 0 then
 | 
|---|
| 1126 |         begin
 | 
|---|
| 1127 |           Alist.Assign(GetServicePrerequisites(ItemID + CSLT_PTR));
 | 
|---|
| 1128 |           if AList.Count > 0 then
 | 
|---|
| 1129 |             begin
 | 
|---|
| 1130 |               if not DisplayPrerequisites(AList, TC_PREREQUISITES + DisplayText[ItemIndex]) then
 | 
|---|
| 1131 |                 begin
 | 
|---|
| 1132 |                   memOrder.Clear;
 | 
|---|
| 1133 |                   Result := False;
 | 
|---|
| 1134 |                   AbortOrder := True;
 | 
|---|
| 1135 |                end
 | 
|---|
| 1136 |               else Result := True;
 | 
|---|
| 1137 |             end;
 | 
|---|
| 1138 |         end;
 | 
|---|
| 1139 |   finally
 | 
|---|
| 1140 |     AList.Free;
 | 
|---|
| 1141 |   end;
 | 
|---|
| 1142 | end;
 | 
|---|
| 1143 | 
 | 
|---|
| 1144 | procedure TfrmODCslt.cboServiceExit(Sender: TObject);
 | 
|---|
| 1145 | begin
 | 
|---|
| 1146 |   inherited;
 | 
|---|
| 1147 |   if Length(memOrder.Text) = 0 then Exit;
 | 
|---|
| 1148 |   if (Length(cboService.ItemID) = 0) or (cboService.ItemID = '0') then Exit;
 | 
|---|
| 1149 |   if cboService.ItemID = FLastServiceID then Exit;
 | 
|---|
| 1150 |   cboServiceSelect(cboService);
 | 
|---|
| 1151 |   // CQ #7490, following line commented out v26.24 (RV)
 | 
|---|
| 1152 |   // CQ #9610 and 10074 - uncommented and "if" added v26.54 (RV)
 | 
|---|
| 1153 |   if cboService.Enabled then cboService.SetFocus;
 | 
|---|
| 1154 |   PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
 | 
|---|
| 1155 | end;
 | 
|---|
| 1156 | 
 | 
|---|
| 1157 | procedure TfrmODCslt.popReasonPopup(Sender: TObject);
 | 
|---|
| 1158 | begin
 | 
|---|
| 1159 |   inherited;
 | 
|---|
| 1160 |   if PopupComponent(Sender, popReason) is TCustomEdit
 | 
|---|
| 1161 |     then FEditCtrl := TCustomEdit(PopupComponent(Sender, popReason))
 | 
|---|
| 1162 |     else FEditCtrl := nil;
 | 
|---|
| 1163 |   if FEditCtrl <> nil then
 | 
|---|
| 1164 |   begin
 | 
|---|
| 1165 |     popReasonCut.Enabled      := FEditCtrl.SelLength > 0;
 | 
|---|
| 1166 |     popReasonCopy.Enabled     := popReasonCut.Enabled;
 | 
|---|
| 1167 |     popReasonPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
 | 
|---|
| 1168 |                                    Clipboard.HasFormat(CF_TEXT);
 | 
|---|
| 1169 |   end else
 | 
|---|
| 1170 |   begin
 | 
|---|
| 1171 |     popReasonCut.Enabled      := False;
 | 
|---|
| 1172 |     popReasonCopy.Enabled     := False;
 | 
|---|
| 1173 |     popReasonPaste.Enabled    := False;
 | 
|---|
| 1174 |   end;
 | 
|---|
| 1175 |   popReasonReformat.Enabled := True;
 | 
|---|
| 1176 | end;
 | 
|---|
| 1177 | 
 | 
|---|
| 1178 | procedure TfrmODCslt.popReasonCutClick(Sender: TObject);
 | 
|---|
| 1179 | begin
 | 
|---|
| 1180 |   inherited;
 | 
|---|
| 1181 |   FEditCtrl.CutToClipboard;
 | 
|---|
| 1182 | end;
 | 
|---|
| 1183 | 
 | 
|---|
| 1184 | procedure TfrmODCslt.popReasonCopyClick(Sender: TObject);
 | 
|---|
| 1185 | begin
 | 
|---|
| 1186 |   inherited;
 | 
|---|
| 1187 |   FEditCtrl.CopyToClipboard;
 | 
|---|
| 1188 | end;
 | 
|---|
| 1189 | 
 | 
|---|
| 1190 | procedure TfrmODCslt.popReasonPasteClick(Sender: TObject);
 | 
|---|
| 1191 | begin
 | 
|---|
| 1192 |   inherited;
 | 
|---|
| 1193 |   FEditCtrl.SelText := Clipboard.AsText;
 | 
|---|
| 1194 | end;
 | 
|---|
| 1195 | 
 | 
|---|
| 1196 | procedure TfrmODCslt.popReasonReformatClick(Sender: TObject);
 | 
|---|
| 1197 | begin
 | 
|---|
| 1198 |   inherited;
 | 
|---|
| 1199 |   if Screen.ActiveControl <> memReason then Exit;
 | 
|---|
| 1200 |   ReformatMemoParagraph(memReason);
 | 
|---|
| 1201 | end;
 | 
|---|
| 1202 | 
 | 
|---|
| 1203 | function TfrmODCslt.DefaultReasonForRequest(Service: string;
 | 
|---|
| 1204 |   Resolve: Boolean): TStrings;
 | 
|---|
| 1205 | var
 | 
|---|
| 1206 |   TmpSL: TStringList;
 | 
|---|
| 1207 |   DocInfo: string;
 | 
|---|
| 1208 |   x: string;
 | 
|---|
| 1209 |   HasObjects: boolean;
 | 
|---|
| 1210 | begin
 | 
|---|
| 1211 |   Resolve := FALSE ;  // override value passed in - resolve on client - PSI-05-093
 | 
|---|
| 1212 |   DocInfo := '';
 | 
|---|
| 1213 |   TmpSL := TStringList.Create;
 | 
|---|
| 1214 |   try
 | 
|---|
| 1215 |     Result := GetDefaultReasonForRequest(Service + CSLT_PTR, Resolve);
 | 
|---|
| 1216 |     TmpSL.Assign(Result);
 | 
|---|
| 1217 |     x := TmpSL.Text;
 | 
|---|
| 1218 |     ExpandOrderObjects(x, HasObjects);
 | 
|---|
| 1219 |     TmpSL.Text := x;
 | 
|---|
| 1220 |     Responses.OrderContainsObjects := HasObjects;
 | 
|---|
| 1221 | //  ExecuteTemplateOrBoilerPlate(TmpSL, cboService.ItemIEN , ltConsult, nil, 'Reason for Request: ' + cboService.DisplayText[cboService.ItemIndex], DocInfo);  <-- original line.  //kt 8/8/2007
 | 
|---|
| 1222 |     ExecuteTemplateOrBoilerPlate(TmpSL, cboService.ItemIEN , ltConsult, nil, DKLangConstW('fODConsult_Reason_for_Requestx') + cboService.DisplayText[cboService.ItemIndex], DocInfo); //kt added 8/8/2007
 | 
|---|
| 1223 |     if TmpSL.Text <> x then Responses.OrderContainsObjects := False;
 | 
|---|
| 1224 |     Result.Assign(TmpSL);
 | 
|---|
| 1225 |   finally
 | 
|---|
| 1226 |     TmpSL.Free;
 | 
|---|
| 1227 |   end;
 | 
|---|
| 1228 | end;
 | 
|---|
| 1229 | 
 | 
|---|
| 1230 | procedure TfrmODCslt.pnlServiceTreeButtonEnter(Sender: TObject);
 | 
|---|
| 1231 | begin
 | 
|---|
| 1232 |   inherited;
 | 
|---|
| 1233 |   (Sender as TPanel).BevelOuter := bvRaised;
 | 
|---|
| 1234 | end;
 | 
|---|
| 1235 | 
 | 
|---|
| 1236 | procedure TfrmODCslt.pnlServiceTreeButtonExit(Sender: TObject);
 | 
|---|
| 1237 | begin
 | 
|---|
| 1238 |   inherited;
 | 
|---|
| 1239 |   (Sender as TPanel).BevelOuter := bvNone;
 | 
|---|
| 1240 | end;
 | 
|---|
| 1241 | 
 | 
|---|
| 1242 | procedure TfrmODCslt.treServiceKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 1243 |   Shift: TShiftState);
 | 
|---|
| 1244 | begin
 | 
|---|
| 1245 |   inherited;
 | 
|---|
| 1246 |   case Key of
 | 
|---|
| 1247 |   VK_SPACE, VK_RETURN:
 | 
|---|
| 1248 |     begin
 | 
|---|
| 1249 |       Key := 0;
 | 
|---|
| 1250 |       FKeyBoarding := False;
 | 
|---|
| 1251 |       treServiceChange(Sender, treService.Selected);
 | 
|---|
| 1252 |     end;
 | 
|---|
| 1253 |   else
 | 
|---|
| 1254 |     FKeyBoarding := True;
 | 
|---|
| 1255 |   end;
 | 
|---|
| 1256 | end;
 | 
|---|
| 1257 | 
 | 
|---|
| 1258 | procedure TfrmODCslt.treServiceKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 1259 |   Shift: TShiftState);
 | 
|---|
| 1260 | begin
 | 
|---|
| 1261 |   inherited;
 | 
|---|
| 1262 |   FKeyBoarding := False;
 | 
|---|
| 1263 | end;
 | 
|---|
| 1264 | 
 | 
|---|
| 1265 | procedure TfrmODCslt.DoSetFontSize(FontSize: integer);
 | 
|---|
| 1266 | begin
 | 
|---|
| 1267 |   memReason.DefAttributes.Size := FontSize;
 | 
|---|
| 1268 |   treService.Font.Size := FontSize * 7 div 8;
 | 
|---|
| 1269 | end;
 | 
|---|
| 1270 | 
 | 
|---|
| 1271 | procedure TfrmODCslt.SetFontSize(FontSize: integer);
 | 
|---|
| 1272 | begin
 | 
|---|
| 1273 |   inherited SetFontSize(FontSize);
 | 
|---|
| 1274 |   DoSetFontSize(FontSize);
 | 
|---|
| 1275 | end;
 | 
|---|
| 1276 | 
 | 
|---|
| 1277 | procedure TfrmODCslt.memReasonKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 1278 |   Shift: TShiftState);
 | 
|---|
| 1279 | begin
 | 
|---|
| 1280 |   inherited;
 | 
|---|
| 1281 |   if FNavigatingTab then
 | 
|---|
| 1282 |   begin
 | 
|---|
| 1283 |     if ssShift in Shift then
 | 
|---|
| 1284 |       FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
 | 
|---|
| 1285 |     else if ssCtrl      in Shift then
 | 
|---|
| 1286 |       FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
 | 
|---|
| 1287 |     FNavigatingTab := False;
 | 
|---|
| 1288 |   end;
 | 
|---|
| 1289 |   if (key = VK_ESCAPE) then begin
 | 
|---|
| 1290 |     FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
 | 
|---|
| 1291 |     key := 0;
 | 
|---|
| 1292 |   end;
 | 
|---|
| 1293 | end;
 | 
|---|
| 1294 | 
 | 
|---|
| 1295 | procedure TfrmODCslt.GetProvDxandValidateCode(AResponses: TResponses);
 | 
|---|
| 1296 | var
 | 
|---|
| 1297 |   tmpDx: TResponse;
 | 
|---|
| 1298 | 
 | 
|---|
| 1299 | begin
 | 
|---|
| 1300 |   SetupVars;  //kt added 8/8/2007 to replace constants with vars.
 | 
|---|
| 1301 |   with AResponses do
 | 
|---|
| 1302 |     begin
 | 
|---|
| 1303 |       tmpDx := TResponse(FindResponseByName('MISC',1));
 | 
|---|
| 1304 |       if tmpDx <> nil then ProvDx.Text := tmpDx.Evalue;
 | 
|---|
| 1305 |       tmpDx := TResponse(FindResponseByName('CODE',1));
 | 
|---|
| 1306 |       sourceOrderID := Responses.CopyOrder;
 | 
|---|
| 1307 |       if (tmpDx <> nil) and (tmpDx.EValue <> '') then
 | 
|---|
| 1308 |       begin
 | 
|---|
| 1309 |         if IsActiveICDCode(tmpDx.EValue) then
 | 
|---|
| 1310 |           ProvDx.Code := tmpDx.Evalue
 | 
|---|
| 1311 |         else
 | 
|---|
| 1312 |           begin
 | 
|---|
| 1313 |             if ProvDx.Reqd = 'R' then
 | 
|---|
| 1314 |               InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_REQD, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK)
 | 
|---|
| 1315 |             else
 | 
|---|
| 1316 |               InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_OPTIONAL, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
 | 
|---|
| 1317 |             ProvDx.Code := '';
 | 
|---|
| 1318 |             ProvDx.Text := '';
 | 
|---|
| 1319 |           end;
 | 
|---|
| 1320 |       end;
 | 
|---|
| 1321 |       txtProvDiag.Text := ProvDx.Text;
 | 
|---|
| 1322 |       if ProvDx.Code <> '' then
 | 
|---|
| 1323 |          txtProvDiag.Text :=  (txtProvDiag.Text + ' (' + ProvDx.Code + ')' )
 | 
|---|
| 1324 |       else
 | 
|---|
| 1325 |       begin
 | 
|---|
| 1326 |          if BILLING_AWARE  then
 | 
|---|
| 1327 |            if (sourceOrderID <> '') and (ProvDx.Code <> '') then  // if sourceid exists then user is copying an order.
 | 
|---|
| 1328 |              SetUpCopyConsultDiagnoses(sourceOrderID);
 | 
|---|
| 1329 | 
 | 
|---|
| 1330 |       end;
 | 
|---|
| 1331 | 
 | 
|---|
| 1332 |    end;
 | 
|---|
| 1333 | end;
 | 
|---|
| 1334 | 
 | 
|---|
| 1335 | procedure TfrmODCslt.memReasonKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 1336 |   Shift: TShiftState);
 | 
|---|
| 1337 | begin
 | 
|---|
| 1338 |   inherited;
 | 
|---|
| 1339 |   //The navigating tab controls were inadvertantently adding tab characters
 | 
|---|
| 1340 |   //This should fix it
 | 
|---|
| 1341 |   FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
 | 
|---|
| 1342 |   if FNavigatingTab then
 | 
|---|
| 1343 |     Key := 0;
 | 
|---|
| 1344 | end;
 | 
|---|
| 1345 | 
 | 
|---|
| 1346 | procedure TfrmODCslt.memReasonKeyPress(Sender: TObject; var Key: Char);
 | 
|---|
| 1347 | begin
 | 
|---|
| 1348 |   inherited;
 | 
|---|
| 1349 |   if FNavigatingTab then
 | 
|---|
| 1350 |     Key := #0;  //Disable shift-tab processing
 | 
|---|
| 1351 | end;
 | 
|---|
| 1352 | 
 | 
|---|
| 1353 | procedure TfrmODCslt.cboServiceKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 1354 |   Shift: TShiftState);
 | 
|---|
| 1355 | begin
 | 
|---|
| 1356 |   inherited;
 | 
|---|
| 1357 |   //This fixes clearquest: HDS00001418 Makes it so OnClick is not called
 | 
|---|
| 1358 |   //Except when Enter or Space is pressed. VK_LBUTTON activates OnClick in TORComboBoxes
 | 
|---|
| 1359 |   FcboServiceKeyDownStopClick := false;
 | 
|---|
| 1360 |   if (Key <> VK_RETURN) {and (Key <> VK_SPACE)} and (Key <> VK_LBUTTON) then  //comment on this line is fix for CQ6789
 | 
|---|
| 1361 |     FcboServiceKeyDownStopClick := True
 | 
|---|
| 1362 |   else
 | 
|---|
| 1363 |     Key := VK_LBUTTON;
 | 
|---|
| 1364 | end;
 | 
|---|
| 1365 | 
 | 
|---|
| 1366 | procedure TfrmODCslt.cboServiceKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
| 1367 |   Shift: TShiftState);
 | 
|---|
| 1368 | begin
 | 
|---|
| 1369 |   inherited;
 | 
|---|
| 1370 |   FcboServiceKeyDownStopClick := false;
 | 
|---|
| 1371 | end;
 | 
|---|
| 1372 | 
 | 
|---|
| 1373 | 
 | 
|---|
| 1374 | procedure TfrmODCslt.btnDiagnosisClick(Sender: TObject);
 | 
|---|
| 1375 | var
 | 
|---|
| 1376 |   leftParan, rightParan: string;
 | 
|---|
| 1377 |   tmpOrderIDList: TStringList;
 | 
|---|
| 1378 | begin
 | 
|---|
| 1379 |   inherited;
 | 
|---|
| 1380 |   tmpOrderIDList := TStringList.Create;
 | 
|---|
| 1381 |   tmpOrderIDList.Clear;
 | 
|---|
| 1382 |   leftParan := '(';
 | 
|---|
| 1383 |   rightParan := ')';
 | 
|---|
| 1384 |   UBAGlobals.BAtmpOrderList.Clear;
 | 
|---|
| 1385 |   UBAGlobals.BAtmpOrderList.Add(Responses.OrderText);
 | 
|---|
| 1386 |   quickCode := '';
 | 
|---|
| 1387 |   if consultQuickOrder then
 | 
|---|
| 1388 |   begin
 | 
|---|
| 1389 |      quickCode := Piece(txtProvDiag.text,'(',2);
 | 
|---|
| 1390 |      quickCode := Piece(quickCode,')',1);
 | 
|---|
| 1391 |      if UBACore.IsICD9CodeActive(quickCode,'ICD',0) then
 | 
|---|
| 1392 |      begin
 | 
|---|
| 1393 |        uBAGlobals.BAConsultDxList.Clear;
 | 
|---|
| 1394 |        uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + Piece(txtProvDiag.text,'(',1) + ':' +  quickCode);
 | 
|---|
| 1395 |      end;
 | 
|---|
| 1396 | 
 | 
|---|
| 1397 |   end;
 | 
|---|
| 1398 |   frmBALocalDiagnoses.Enter(UBAConst.F_CONSULTS, nil);
 | 
|---|
| 1399 |   if displayDxCode = '' then txtProvDiag.Text := ''
 | 
|---|
| 1400 |   else
 | 
|---|
| 1401 |   begin
 | 
|---|
| 1402 |      if displayDxCode <> 'DXCANCEL' then
 | 
|---|
| 1403 |      begin
 | 
|---|
| 1404 |         ProvDx.Code := Piece(displayDxCode,':', 2);
 | 
|---|
| 1405 |         ProvDx.Text := Piece(displayDxCode,':', 1);
 | 
|---|
| 1406 |         txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
 | 
|---|
| 1407 |      end;
 | 
|---|
| 1408 |   end;
 | 
|---|
| 1409 | 
 | 
|---|
| 1410 |   ProvDx.CodeInactive := False;
 | 
|---|
| 1411 | end;
 | 
|---|
| 1412 | 
 | 
|---|
| 1413 | procedure TfrmODCslt.cmdQuitClick(Sender: TObject);
 | 
|---|
| 1414 | begin
 | 
|---|
| 1415 |   inherited;
 | 
|---|
| 1416 |   if BILLING_AWARE then uBAGlobals.BAConsultDxList.Clear;
 | 
|---|
| 1417 | end;
 | 
|---|
| 1418 | 
 | 
|---|
| 1419 | procedure  TfrmODCslt.SaveConsultDxForNurse(pDiagnosis: string);
 | 
|---|
| 1420 | var
 | 
|---|
| 1421 |   s,tmpTFactors: string;
 | 
|---|
| 1422 |   tmpList: TStringList;
 | 
|---|
| 1423 | begin
 | 
|---|
| 1424 |    tmpList := TStringList.Create;
 | 
|---|
| 1425 |    tmpList.Clear;
 | 
|---|
| 1426 |    s := '';
 | 
|---|
| 1427 |    tmpList.Add(uBAGlobals.BAOrderID);
 | 
|---|
| 1428 |    s := GetPatientTFactors(tmpList);
 | 
|---|
| 1429 |    tmpTFactors := ConvertPIMTreatmentFactors(s);
 | 
|---|
| 1430 |    BANurseConsultOrders.Add(uBAGlobals.BAOrderID + '1' + tmpTFactors + U + ProvDX.Code);
 | 
|---|
| 1431 | end;
 | 
|---|
| 1432 | 
 | 
|---|
| 1433 | procedure TfrmODCslt.SetUpCopyConsultDiagnoses(pOrderID:string);
 | 
|---|
| 1434 | var
 | 
|---|
| 1435 |   sourceOrderID, primaryText,primaryCode: string;
 | 
|---|
| 1436 |   sourceOrderList: TStringList;
 | 
|---|
| 1437 |   thisOrderList: TStringList;
 | 
|---|
| 1438 | begin
 | 
|---|
| 1439 | //logic handles setting up diagnoses when copying an order.
 | 
|---|
| 1440 |    sourceOrderList := TStringList.Create;
 | 
|---|
| 1441 |    sourceOrderList.Clear;
 | 
|---|
| 1442 |    thisOrderList := TStringList.Create;
 | 
|---|
| 1443 |    thisOrderList.Clear;
 | 
|---|
| 1444 |    if IsOrderBillable(sourceOrderID) then
 | 
|---|
| 1445 |    begin
 | 
|---|
| 1446 |       thisOrderList.Add(sourceOrderID);
 | 
|---|
| 1447 |       sourceOrderList := rpcRetrieveSelectedOrderInfo(thisOrderList);
 | 
|---|
| 1448 |       primaryText := Piece(sourceOrderList.Strings[0],U,4);
 | 
|---|
| 1449 |       primaryCode := Piece(sourceOrderList.Strings[0],U,3);
 | 
|---|
| 1450 |       txtProvDiag.Text := primaryText + ' (' + primaryCode + ')';
 | 
|---|
| 1451 |       ProvDx.CodeInactive := False;
 | 
|---|
| 1452 |       // need to handle the rest of the dx's
 | 
|---|
| 1453 |       uBAGlobals.BAConsultDxList.Clear;
 | 
|---|
| 1454 |       uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + Piece(txtProvDiag.text,'(',1) + ':' +  primaryCode);
 | 
|---|
| 1455 |       if (Piece(sourceOrderList.Strings[0],U,5) <> '') then // dx2
 | 
|---|
| 1456 |          uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,6) + ':' +  Piece(sourceOrderList.Strings[0],U,5));
 | 
|---|
| 1457 |       if  (Piece(sourceOrderList.Strings[0],U,7) <> '') then // dx3
 | 
|---|
| 1458 |          uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,8) + ':' +  Piece(sourceOrderList.Strings[0],U,7));
 | 
|---|
| 1459 |       if (Piece(sourceOrderList.Strings[0],U,9) <> '') then // dx4
 | 
|---|
| 1460 |          uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,10) + ':' +  Piece(sourceOrderList.Strings[0],U,9));
 | 
|---|
| 1461 |    end;
 | 
|---|
| 1462 | end;
 | 
|---|
| 1463 | 
 | 
|---|
| 1464 | procedure TfrmODCslt.FormClose(Sender: TObject; var Action: TCloseAction);
 | 
|---|
| 1465 | begin
 | 
|---|
| 1466 |   inherited;
 | 
|---|
| 1467 |   frmFrame.pnlVisit.Enabled := true;
 | 
|---|
| 1468 | end;
 | 
|---|
| 1469 | 
 | 
|---|
| 1470 | end.
 | 
|---|
| 1471 | 
 | 
|---|
| 1472 | 
 | 
|---|