| [460] | 1 | unit fNoteProps;
 | 
|---|
| [459] | 2 | 
 | 
|---|
 | 3 | interface
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | uses
 | 
|---|
 | 6 |   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
|---|
| [460] | 7 |   StdCtrls, ORDtTm, ORCtrls, ExtCtrls, rTIU, uConst, uTIU, ORFn, ORNet,
 | 
|---|
 | 8 |   ComCtrls, Buttons;
 | 
|---|
| [459] | 9 | 
 | 
|---|
 | 10 | type
 | 
|---|
| [460] | 11 |   {This object holds a List of Actions as Returned VIA the RPCBroker}
 | 
|---|
 | 12 |   TPRFActions = class(TObject)
 | 
|---|
 | 13 |   private
 | 
|---|
 | 14 |     FPRFActionList : TStringList;
 | 
|---|
 | 15 |   public
 | 
|---|
 | 16 |     //procedure to show the Action in a ListView, requires a listview parameter
 | 
|---|
 | 17 |     procedure ShowActionsOnList(DisplayList : TCaptionListView);
 | 
|---|
 | 18 |     //procedure to load the actions, this will call the RPC
 | 
|---|
 | 19 |     procedure Load(TitleIEN : Int64; DFN : String);
 | 
|---|
 | 20 |     //returns true if the Action at the Index passed is associated with a note
 | 
|---|
 | 21 |     function SelActionHasNote(lstIndex : integer) : boolean;
 | 
|---|
 | 22 |     //return the Action IEN at the Index passed
 | 
|---|
 | 23 |     function GetActionIEN(lstIndex : integer) : String;
 | 
|---|
 | 24 |     //return the PRF IEN at the Index passed
 | 
|---|
 | 25 |     function GetPRF_IEN(lstIndex : integer) : integer;
 | 
|---|
 | 26 |     constructor Create();
 | 
|---|
 | 27 |     destructor Destroy(); override;
 | 
|---|
 | 28 |   end;
 | 
|---|
 | 29 | 
 | 
|---|
| [459] | 30 |   TfrmNoteProperties = class(TForm)
 | 
|---|
 | 31 |     lblNewTitle: TLabel;
 | 
|---|
 | 32 |     cboNewTitle: TORComboBox;
 | 
|---|
 | 33 |     lblDateTime: TLabel;
 | 
|---|
 | 34 |     calNote: TORDateBox;
 | 
|---|
 | 35 |     lblAuthor: TLabel;
 | 
|---|
 | 36 |     cboAuthor: TORComboBox;
 | 
|---|
 | 37 |     lblCosigner: TLabel;
 | 
|---|
 | 38 |     cboCosigner: TORComboBox;
 | 
|---|
 | 39 |     cmdOK: TButton;
 | 
|---|
 | 40 |     cmdCancel: TButton;
 | 
|---|
 | 41 |     pnlConsults: TORAutoPanel;
 | 
|---|
 | 42 |     lblConsult1: TLabel;
 | 
|---|
 | 43 |     lblConsult2: TLabel;
 | 
|---|
 | 44 |     lblCsltDate: TLabel;
 | 
|---|
 | 45 |     lblCsltServ: TLabel;
 | 
|---|
 | 46 |     lblCsltProc: TLabel;
 | 
|---|
 | 47 |     lblCsltStat: TLabel;
 | 
|---|
 | 48 |     lblCsltNotes: TLabel;
 | 
|---|
 | 49 |     lstRequests: TORListBox;
 | 
|---|
 | 50 |     bvlConsult: TBevel;
 | 
|---|
 | 51 |     pnlSurgery: TORAutoPanel;
 | 
|---|
 | 52 |     lblSurgery1: TStaticText;
 | 
|---|
 | 53 |     lblSurgery2: TStaticText;
 | 
|---|
 | 54 |     lblSurgDate: TLabel;
 | 
|---|
 | 55 |     lblSurgProc: TLabel;
 | 
|---|
 | 56 |     lblSurgeon: TLabel;
 | 
|---|
 | 57 |     lstSurgery: TORListBox;
 | 
|---|
 | 58 |     bvlSurgery: TBevel;
 | 
|---|
 | 59 |     cboProcSummCode: TORComboBox;
 | 
|---|
 | 60 |     lblProcSummCode: TOROffsetLabel;
 | 
|---|
 | 61 |     calProcDateTime: TORDateBox;
 | 
|---|
 | 62 |     lblProcDateTime: TOROffsetLabel;
 | 
|---|
 | 63 |     btnShowList: TButton;
 | 
|---|
| [460] | 64 |     pnlPRF: TORAutoPanel;
 | 
|---|
 | 65 |     lblPRF: TLabel;
 | 
|---|
 | 66 |     Bevel1: TBevel;
 | 
|---|
 | 67 |     lvPRF: TCaptionListView;
 | 
|---|
 | 68 |     btnDetails: TButton;
 | 
|---|
| [459] | 69 |     procedure FormShow(Sender: TObject);
 | 
|---|
 | 70 |     procedure cboNewTitleNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 71 |       Direction, InsertAt: Integer);
 | 
|---|
 | 72 |     procedure NewPersonNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 73 |       Direction, InsertAt: Integer);
 | 
|---|
 | 74 |     procedure cmdOKClick(Sender: TObject);
 | 
|---|
 | 75 |     procedure cmdCancelClick(Sender: TObject);
 | 
|---|
 | 76 |     procedure cboNewTitleExit(Sender: TObject);
 | 
|---|
 | 77 |     procedure cboNewTitleMouseClick(Sender: TObject);
 | 
|---|
 | 78 |     procedure cboNewTitleEnter(Sender: TObject);
 | 
|---|
 | 79 |     procedure cboCosignerExit(Sender: TObject);
 | 
|---|
 | 80 |     procedure cboAuthorExit(Sender: TObject);
 | 
|---|
 | 81 |     procedure cboAuthorMouseClick(Sender: TObject);
 | 
|---|
 | 82 |     procedure cboAuthorEnter(Sender: TObject);
 | 
|---|
 | 83 |     procedure cboNewTitleDropDownClose(Sender: TObject);
 | 
|---|
 | 84 |     procedure cboNewTitleDblClick(Sender: TObject);
 | 
|---|
 | 85 |     procedure cboCosignerNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 86 |       Direction, InsertAt: Integer);
 | 
|---|
 | 87 |     procedure btnShowListClick(Sender: TObject);
 | 
|---|
 | 88 |     procedure FormResize(Sender: TObject);
 | 
|---|
 | 89 |     procedure calNoteEnter(Sender: TObject);
 | 
|---|
| [460] | 90 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
 | 91 |     procedure btnDetailsClick(Sender: TObject);
 | 
|---|
 | 92 |     procedure lstRequestsChange(Sender: TObject);
 | 
|---|
| [459] | 93 |   private
 | 
|---|
 | 94 |     FCosignIEN: Int64;      // store cosigner that was passed in
 | 
|---|
 | 95 |     FCosignName: string;    // store cosigner that was passed in
 | 
|---|
 | 96 |     FDocType: Integer;      // store document type that was passed in
 | 
|---|
 | 97 |     FAddend: Integer;       // store IEN of note being addended (if make addendum)
 | 
|---|
 | 98 |     FLastAuthor: Int64;     // set by mouseclick to avoid redundant call on exit
 | 
|---|
 | 99 |     FLastTitle: Integer;    // set by mouseclick to avoid redundant call on exit
 | 
|---|
 | 100 |     //FFixCursor: Boolean;    // to fix the problem where the list box is an I-bar
 | 
|---|
 | 101 |     FLastCosigner: Int64;      // holds cosigner from previous note (for defaulting)
 | 
|---|
 | 102 |     FLastCosignerName: string; // holds cosigner from previous note (for defaulting)
 | 
|---|
 | 103 |     FCallingTab: integer;
 | 
|---|
 | 104 |     FIDNoteTitlesOnly: boolean;
 | 
|---|
 | 105 |     FToday: string;
 | 
|---|
 | 106 |     FClassName: string;
 | 
|---|
 | 107 |     FIsClinProcNote: boolean;
 | 
|---|
 | 108 |     FProcSummCode: integer;
 | 
|---|
 | 109 |     FProcDateTime: TFMDateTime;
 | 
|---|
 | 110 |     FCPStatusFlag: integer;
 | 
|---|
| [460] | 111 |     FPRFActions : TPRFActions;
 | 
|---|
 | 112 |     FStarting: boolean;
 | 
|---|
| [459] | 113 |     procedure SetCosignerRequired(DoSetup: boolean);
 | 
|---|
 | 114 |     procedure FormatRequestList;
 | 
|---|
 | 115 |     procedure ShowRequestList(ShouldShow: Boolean);
 | 
|---|
 | 116 |     procedure ShowSurgCaseList(ShouldShow: Boolean);
 | 
|---|
| [460] | 117 |     procedure ShowPRFList(ShouldShow: Boolean);
 | 
|---|
| [459] | 118 |     procedure ShowClinProcFields(YesNo: boolean);
 | 
|---|
| [460] | 119 |     procedure SetGenericFormSize;
 | 
|---|
| [459] | 120 |     procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
 | 
|---|
 | 121 |   public
 | 
|---|
 | 122 |     { Public declarations }
 | 
|---|
| [460] | 123 | 
 | 
|---|
| [459] | 124 |   end;
 | 
|---|
 | 125 | 
 | 
|---|
| [460] | 126 | 
 | 
|---|
| [459] | 127 | function ExecuteNoteProperties(var ANote: TEditNoteRec; CallingTab: integer; IDNoteTitlesOnly,
 | 
|---|
 | 128 |           IsNewIDEntry: boolean; AClassName: string; CPStatusFlag: integer): Boolean;
 | 
|---|
 | 129 | 
 | 
|---|
 | 130 | const
 | 
|---|
 | 131 | 
 | 
|---|
 | 132 |  TX_USER_INACTIVE     = 'This entry can be selected, however their system account has been' +CRLF +
 | 
|---|
 | 133 |                         ' temporarily inactivated and that person should be contacted to resolve the issue.';
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 |  TC_INACTIVE_USER     = 'Inactive User Alert';
 | 
|---|
 | 136 | 
 | 
|---|
| [460] | 137 |  PIXEL_SPACE = 6;
 | 
|---|
 | 138 | 
 | 
|---|
| [459] | 139 | implementation
 | 
|---|
 | 140 | 
 | 
|---|
 | 141 | {$R *.DFM}
 | 
|---|
 | 142 | 
 | 
|---|
| [460] | 143 | uses uCore, rCore, rConsults, uConsults, rSurgery, uAccessibleListBox, fRptBox;
 | 
|---|
| [459] | 144 | 
 | 
|---|
 | 145 | { Initial values in ANote
 | 
|---|
 | 146 | 
 | 
|---|
 | 147 |                   Title  Type    Author  DateTime  Cosigner  Location  Consult  NeedCPT
 | 
|---|
 | 148 |      New Note      dflt     3      DUZ      NOW      dflt      Encnt      0        ?
 | 
|---|
 | 149 |      New DCSumm    dflt   244      DUZ      NOW      dflt      Encnt      0        ?
 | 
|---|
 | 150 |     Edit Note      ien      3      ien     DtTm       ien       ien      ien      fld
 | 
|---|
 | 151 |     Edit DCSumm    ien    244      ien     DtTm       ien       ien      ien      fld
 | 
|---|
 | 152 |   Addend Note      ien     81      DUZ      NOW        0        N/A      N/A?      no
 | 
|---|
 | 153 |   Addend DCSumm    ien     81      DUZ      NOW        0        N/A      N/A?      no
 | 
|---|
 | 154 | 
 | 
|---|
 | 155 |   New Note - setup as much as possible, then call ExecuteNoteProperties if necessary.
 | 
|---|
 | 156 | 
 | 
|---|
 | 157 | }
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 | const
 | 
|---|
 | 160 |   TX_CP_CAPTION        = 'Clinical Procedure Document Properties';
 | 
|---|
 | 161 |   TX_CP_TITLE          = 'Document Title:';
 | 
|---|
 | 162 |   TX_SR_CAPTION        = 'Surgical Report Properties';
 | 
|---|
 | 163 |   TX_SR_TITLE          = 'Report Title:';
 | 
|---|
 | 164 |   TC_REQ_FIELDS        = 'Required Information';
 | 
|---|
 | 165 |   TX_REQ_TITLE         = CRLF + 'A title must be selected.';
 | 
|---|
 | 166 |   TX_REQ_AUTHOR        = CRLF + 'The author of the note must be identified.';
 | 
|---|
 | 167 |   TX_REQ_REFDATE       = CRLF + 'A valid date/time for the note must be entered.';
 | 
|---|
 | 168 |   TX_REQ_COSIGNER      = CRLF + 'A cosigner must be identified.';
 | 
|---|
 | 169 |   TX_REQ_REQUEST       = CRLF + 'This title requires the selection of an associated consult request.';
 | 
|---|
 | 170 |   TX_REQ_SURGCASE      = CRLF + 'This title requires the selection of an associated surgery case.';
 | 
|---|
| [460] | 171 |   TX_REQ_PRF_ACTION    = CRLF + 'Notes of this title require the selection of a patient record flag action.';
 | 
|---|
 | 172 |   TX_REQ_PRF_NOTE      = CRLF + 'This action has already been assigned to another note.';
 | 
|---|
| [459] | 173 |   TX_NO_FUTURE         = CRLF + 'A reference date/time in the future is not allowed.';
 | 
|---|
 | 174 |   TX_COS_SELF          = CRLF + 'You cannot make yourself a cosigner.';
 | 
|---|
 | 175 |   TX_COS_AUTH          = CRLF + ' is not authorized to cosign this document.';
 | 
|---|
 | 176 |   TX_REQ_PROCSUMMCODE  = CRLF + 'A procedure summary code for this procedure must be entered.';
 | 
|---|
 | 177 |   TX_REQ_PROCDATETIME  = CRLF + 'A valid date/time for the procedure must be entered.';
 | 
|---|
 | 178 |   TX_INVALID_PROCDATETIME = CRLF + 'If entered, the date/time for the procedure must be in a valid format.';
 | 
|---|
 | 179 |   TX_NO_PROC_FUTURE    = CRLF + 'A procedure date/time in the future is not allowed.';
 | 
|---|
 | 180 |   TX_NO_TITLE_CHANGE   = 'Interdisciplinary entries may not have their titles changed.';
 | 
|---|
 | 181 |   TC_NO_TITLE_CHANGE   = 'Title Change Not Allowed';
 | 
|---|
 | 182 |   TX_NO_NEW_SURGERY    = 'New surgery reports can only be entered via the Surgery package.';
 | 
|---|
 | 183 |   TC_NO_NEW_SURGERY    = 'Choose another title';
 | 
|---|
 | 184 |   TX_UNRESOLVED_CONSULTS = 'You currently have consults awaiting resolution for this patient.' + CRLF +
 | 
|---|
 | 185 |                            'Would you like to see a list of these consults?';
 | 
|---|
 | 186 |   TX_ONE_NOTE_PER_VISIT1  = 'There is already a ';
 | 
|---|
 | 187 |   TX_ONE_NOTE_PER_VISIT2  = CRLF + 'Only ONE record of this type per Visit is allowed...'+
 | 
|---|
 | 188 |                             CRLF + CRLF + 'You can addend the existing record.';
 | 
|---|
 | 189 | 
 | 
|---|
 | 190 | 
 | 
|---|
 | 191 |   ACTIVE_STATUS = 'ACTIVE,PENDING,SCHEDULED';
 | 
|---|
 | 192 | 
 | 
|---|
| [460] | 193 |   PRF_LABEL = 'Which Patient Record Flag Action should this Note be linked to?';
 | 
|---|
| [459] | 194 | 
 | 
|---|
| [460] | 195 |   FLAG_NAME = 1;
 | 
|---|
 | 196 |   PRF_IEN = 2;
 | 
|---|
 | 197 |   ACTION_NAME = 3;
 | 
|---|
 | 198 |   ACTION_IEN = 4;
 | 
|---|
 | 199 |   ACTION_DATE_I = 5;
 | 
|---|
 | 200 |   ACTION_DATE = 6;
 | 
|---|
 | 201 |   NOTE_IEN = 7;
 | 
|---|
 | 202 | 
 | 
|---|
 | 203 | 
 | 
|---|
| [459] | 204 | var
 | 
|---|
 | 205 |   uConsultsList: TStringList;
 | 
|---|
 | 206 |   uShowUnresolvedOnly: boolean;
 | 
|---|
 | 207 | 
 | 
|---|
 | 208 | function ExecuteNoteProperties(var ANote: TEditNoteRec; CallingTab: integer; IDNoteTitlesOnly,
 | 
|---|
 | 209 |           IsNewIDEntry: boolean; AClassName: string; CPStatusFlag: integer): Boolean;
 | 
|---|
 | 210 | var
 | 
|---|
 | 211 |   frmNoteProperties: TfrmNoteProperties;
 | 
|---|
 | 212 | begin
 | 
|---|
 | 213 |   frmNoteProperties := TfrmNoteProperties.Create(Application);
 | 
|---|
 | 214 |   uConsultsList := TStringList.Create;
 | 
|---|
 | 215 |   try
 | 
|---|
 | 216 |     ResizeAnchoredFormToFont(frmNoteProperties);
 | 
|---|
 | 217 |     with frmNoteProperties do
 | 
|---|
 | 218 |     begin
 | 
|---|
 | 219 |       // setup common fields (title, reference date, author)
 | 
|---|
 | 220 |       FToday := FloatToStr(FMToday);
 | 
|---|
 | 221 |       FCallingTab := CallingTab;
 | 
|---|
 | 222 |       FIDNoteTitlesOnly := IDNoteTitlesOnly;
 | 
|---|
 | 223 |       FClassName := AClassName;
 | 
|---|
 | 224 |       FIsClinProcNote := (AClassName = DCL_CLINPROC);
 | 
|---|
 | 225 |       FCPStatusFlag := CPStatusFlag;
 | 
|---|
| [460] | 226 |       //uShowUnresolvedOnly := False;                      //v26.5 (RV)
 | 
|---|
 | 227 |       uShowUnresolvedOnly := True;                         //v26.5 (RV)
 | 
|---|
| [459] | 228 |       if ANote.DocType <> TYP_ADDENDUM then
 | 
|---|
 | 229 |         begin
 | 
|---|
 | 230 |           case FCallingTab of
 | 
|---|
 | 231 |             CT_CONSULTS:  begin
 | 
|---|
 | 232 |                             Caption := 'Consult Note Properties';
 | 
|---|
 | 233 |                             cboNewTitle.InitLongList('');
 | 
|---|
 | 234 |                             if FIsClinProcNote then
 | 
|---|
 | 235 |                               begin
 | 
|---|
 | 236 |                                 Caption := TX_CP_CAPTION;
 | 
|---|
 | 237 |                                 lblNewTitle.Caption := TX_CP_TITLE;
 | 
|---|
 | 238 |                                 ListClinProcTitlesShort(cboNewTitle.Items);
 | 
|---|
 | 239 |                                 cboAuthor.InitLongList(User.Name);
 | 
|---|
 | 240 |                                 cboAuthor.SelectByIEN(User.DUZ);
 | 
|---|
 | 241 |                                 cboProcSummCode.SelectByIEN(ANote.ClinProcSummCode);
 | 
|---|
 | 242 |                                 calProcDateTime.FMDateTime := ANote.ClinProcDateTime;
 | 
|---|
 | 243 |                               end
 | 
|---|
 | 244 |                             else   // not CP note
 | 
|---|
 | 245 |                               begin
 | 
|---|
 | 246 |                                 ListConsultTitlesShort(cboNewTitle.Items);
 | 
|---|
 | 247 |                                 cboAuthor.InitLongList(ANote.AuthorName);
 | 
|---|
 | 248 |                                 if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
 | 
|---|
 | 249 |                               end;
 | 
|---|
 | 250 |                           end ;
 | 
|---|
 | 251 |            CT_SURGERY:    begin
 | 
|---|
 | 252 |                             Caption := TX_SR_CAPTION;
 | 
|---|
 | 253 |                             lblNewTitle.Caption := TX_SR_TITLE;
 | 
|---|
 | 254 |                             cboNewTitle.InitLongList('');
 | 
|---|
 | 255 |                             cboAuthor.InitLongList(ANote.AuthorName);
 | 
|---|
 | 256 |                             if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
 | 
|---|
 | 257 |                             ListSurgeryTitlesShort(cboNewTitle.Items, FClassName);
 | 
|---|
 | 258 |                           end;
 | 
|---|
 | 259 |            CT_NOTES:      begin
 | 
|---|
 | 260 |                             Caption := 'Progress Note Properties';
 | 
|---|
| [460] | 261 |                             if ANote.IsNewNote then
 | 
|---|
 | 262 |                             begin
 | 
|---|
 | 263 |                               GetUnresolvedConsultsInfo; // v26.5 (RV) removed nag screen
 | 
|---|
 | 264 |                             end;
 | 
|---|
| [459] | 265 |                             cboNewTitle.InitLongList('');
 | 
|---|
 | 266 |                             cboAuthor.InitLongList(ANote.AuthorName);
 | 
|---|
 | 267 |                             if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
 | 
|---|
 | 268 |                             ListNoteTitlesShort(cboNewTitle.Items);
 | 
|---|
 | 269 |                             // HOW TO PREVENT TITLE CHANGE ON ID CHILD, BUT NOT ON INITIAL CREATE?????
 | 
|---|
 | 270 |                             cboNewTitle.Enabled := not ((ANote.IDParent > 0) and (ANote.Title > 0) and (not IsNewIDEntry));
 | 
|---|
 | 271 |                             if not cboNewTitle.Enabled then
 | 
|---|
 | 272 |                               begin
 | 
|---|
 | 273 |                                 cboNewTitle.Color := clBtnFace;
 | 
|---|
 | 274 |                                 InfoBox(TX_NO_TITLE_CHANGE, TC_NO_TITLE_CHANGE, MB_OK);
 | 
|---|
 | 275 |                               end;
 | 
|---|
 | 276 |                           end;
 | 
|---|
 | 277 |             end;
 | 
|---|
 | 278 |         end
 | 
|---|
 | 279 |       else //if addendum
 | 
|---|
 | 280 |         begin
 | 
|---|
 | 281 |           Caption := 'Addendum Properties';
 | 
|---|
 | 282 |           cboNewTitle.Items.Insert(0, IntToStr(ANote.Title) + U + ANote.TitleName);
 | 
|---|
 | 283 |           cboAuthor.InitLongList(ANote.AuthorName);
 | 
|---|
 | 284 |           if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
 | 
|---|
 | 285 |         end;
 | 
|---|
 | 286 |       ShowClinProcFields(FIsClinProcNote);
 | 
|---|
| [460] | 287 |       FStarting := True;
 | 
|---|
| [459] | 288 |       if ANote.Title > 0 then cboNewTitle.SelectByIEN(ANote.Title);
 | 
|---|
 | 289 |       if (ANote.Title > 0) and (cboNewTitle.ItemIndex < 0)
 | 
|---|
 | 290 |         then cboNewTitle.SetExactByIEN(ANote.Title, ANote.TitleName);
 | 
|---|
| [460] | 291 |       FStarting := False;
 | 
|---|
| [459] | 292 |       calNote.FMDateTime := ANote.DateTime;
 | 
|---|
 | 293 |       // setup cosigner fields
 | 
|---|
 | 294 |       FAddend           := ANote.Addend;
 | 
|---|
 | 295 |       FCosignIEN        := ANote.Cosigner;
 | 
|---|
 | 296 |       FCosignName       := ANote.CosignerName;
 | 
|---|
 | 297 |       FDocType          := ANote.DocType;
 | 
|---|
 | 298 |       FLastCosigner     := ANote.LastCosigner;
 | 
|---|
 | 299 |       FLastCosignerName := ANote.LastCosignerName;
 | 
|---|
 | 300 |       SetCosignerRequired(True);
 | 
|---|
 | 301 |       // setup package fields
 | 
|---|
| [460] | 302 |       SetGenericFormSize;
 | 
|---|
| [459] | 303 |       case FCallingTab of
 | 
|---|
 | 304 |         CT_CONSULTS:  begin
 | 
|---|
 | 305 |                         ShowRequestList(False);
 | 
|---|
 | 306 |                         ShowSurgCaseList(False);
 | 
|---|
| [460] | 307 |                         ShowPRFList(False);
 | 
|---|
| [459] | 308 |                       end;
 | 
|---|
 | 309 |         CT_SURGERY :  begin
 | 
|---|
 | 310 |                         ShowRequestList(False);
 | 
|---|
 | 311 |                         ShowSurgCaseList(False);
 | 
|---|
| [460] | 312 |                         ShowPRFList(False);
 | 
|---|
| [459] | 313 |                       end;
 | 
|---|
 | 314 |         CT_NOTES   :  begin
 | 
|---|
| [460] | 315 |                         with uUnresolvedConsults do                          // v26.5 (RV)
 | 
|---|
 | 316 |                           ShowRequestList(IsConsultTitle(ANote.Title) or
 | 
|---|
 | 317 |                             (UnresolvedConsultsExist and ShowNagScreen));    // v26.5 (RV)
 | 
|---|
 | 318 |                         ShowSurgCaseList(IsSurgeryTitle(ANote.Title));
 | 
|---|
 | 319 |                         ShowPRFList(IsPRFTitle(ANote.Title));
 | 
|---|
| [459] | 320 |                       end;
 | 
|---|
 | 321 |       end;
 | 
|---|
 | 322 |       // restrict edit of title if addendum
 | 
|---|
 | 323 |       if FDocType = TYP_ADDENDUM then
 | 
|---|
 | 324 |       begin
 | 
|---|
 | 325 |         lblNewTitle.Caption := 'Addendum to:';
 | 
|---|
 | 326 |         cboNewTitle.Enabled := False;
 | 
|---|
 | 327 |         cboNewTitle.Color   := clBtnFace;
 | 
|---|
 | 328 |       end;
 | 
|---|
 | 329 |       cboNewTitle.Caption := lblNewTitle.Caption;
 | 
|---|
| [460] | 330 |       FStarting := True;
 | 
|---|
| [459] | 331 |       cboNewTitleExit(frmNoteProperties);        // force display of request/case list
 | 
|---|
| [460] | 332 |       FStarting := False;
 | 
|---|
| [459] | 333 |       if uShowUnresolvedOnly then                // override previous display if SHOW ME clicked on entrance
 | 
|---|
 | 334 |       begin
 | 
|---|
| [460] | 335 |         //cboNewTitle.ItemIndex := -1;      CQ#7587, v26.25 - RV
 | 
|---|
| [459] | 336 |         uShowUnresolvedOnly := not uShowUnresolvedOnly;
 | 
|---|
 | 337 |         FormatRequestList;
 | 
|---|
 | 338 |       end ;
 | 
|---|
 | 339 |       TAccessibleListBox.WrapControl(cboNewTitle);
 | 
|---|
 | 340 |       try
 | 
|---|
 | 341 |         Result := ShowModal = idOK;                // display the form
 | 
|---|
 | 342 |       finally
 | 
|---|
 | 343 |         TAccessibleListBox.UnwrapControl(cboNewTitle);
 | 
|---|
 | 344 |       end;
 | 
|---|
 | 345 |       if Result then with ANote do
 | 
|---|
 | 346 |       begin
 | 
|---|
 | 347 |         if FDocType <> TYP_ADDENDUM then
 | 
|---|
 | 348 |         begin
 | 
|---|
 | 349 |           Title := cboNewTitle.ItemIEN;
 | 
|---|
 | 350 |           TitleName := PrintNameForTitle(Title);
 | 
|---|
 | 351 |         end;
 | 
|---|
 | 352 |         IsNewNote := False;
 | 
|---|
 | 353 |         DateTime := calNote.FMDateTime;
 | 
|---|
 | 354 |         Author := cboAuthor.ItemIEN;
 | 
|---|
 | 355 |         AuthorName := Piece(cboAuthor.Items[cboAuthor.ItemIndex], U, 2);
 | 
|---|
 | 356 |         if cboCosigner.Visible then
 | 
|---|
 | 357 |         begin
 | 
|---|
 | 358 |           Cosigner := cboCosigner.ItemIEN;
 | 
|---|
 | 359 |           CosignerName := Piece(cboCosigner.Items[cboCosigner.ItemIndex], U, 2);
 | 
|---|
 | 360 |           // The LastCosigner fields are used to default the cosigner in subsequent notes.
 | 
|---|
 | 361 |           // These fields are not reset with new notes & not passed into TIU.
 | 
|---|
 | 362 |           LastCosigner := Cosigner;
 | 
|---|
 | 363 |           LastCosignerName := CosignerName;
 | 
|---|
 | 364 |         end else
 | 
|---|
 | 365 |         begin
 | 
|---|
 | 366 |           Cosigner := 0;
 | 
|---|
 | 367 |           CosignerName := '';
 | 
|---|
 | 368 |         end;
 | 
|---|
 | 369 |         if FIsClinProcNote then
 | 
|---|
 | 370 |           begin
 | 
|---|
 | 371 |             ClinProcSummCode := FProcSummCode;
 | 
|---|
 | 372 |             ClinProcDateTime := FProcDateTime;
 | 
|---|
 | 373 |             if Location <= 0 then
 | 
|---|
 | 374 |               begin
 | 
|---|
 | 375 |                 Location := Encounter.Location;
 | 
|---|
 | 376 |                 LocationName := Encounter.LocationName;
 | 
|---|
 | 377 |               end;
 | 
|---|
 | 378 |             if VisitDate <= 0 then VisitDate := Encounter.DateTime;
 | 
|---|
 | 379 |           end;
 | 
|---|
 | 380 |         case FCallingTab of
 | 
|---|
 | 381 |           CT_CONSULTS:  ;// no action required
 | 
|---|
 | 382 |           CT_SURGERY :  ;// no action required
 | 
|---|
 | 383 |                         (*begin
 | 
|---|
 | 384 |                           PkgIEN := lstSurgery.ItemIEN;
 | 
|---|
 | 385 |                           PkgPtr := PKG_SURGERY;
 | 
|---|
 | 386 |                           PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
 | 
|---|
 | 387 |                         end;*)
 | 
|---|
 | 388 |           CT_NOTES   :  begin
 | 
|---|
 | 389 |                           if pnlConsults.Visible then
 | 
|---|
 | 390 |                             begin
 | 
|---|
 | 391 |                               PkgIEN := lstRequests.ItemIEN;
 | 
|---|
 | 392 |                               PkgPtr := PKG_CONSULTS;
 | 
|---|
 | 393 |                               PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
 | 
|---|
 | 394 |                             end
 | 
|---|
 | 395 |                           else if pnlSurgery.Visible then
 | 
|---|
 | 396 |                             begin
 | 
|---|
 | 397 |                               PkgIEN := lstSurgery.ItemIEN;
 | 
|---|
 | 398 |                               PkgPtr := PKG_SURGERY;
 | 
|---|
 | 399 |                               PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
 | 
|---|
| [460] | 400 |                             end
 | 
|---|
 | 401 |                           else if pnlPRF.Visible then //PRF
 | 
|---|
 | 402 |                             begin
 | 
|---|
 | 403 |                               PRF_IEN := FPRFActions.GetPRF_IEN(lvPRF.ItemIndex);
 | 
|---|
 | 404 |                               ActionIEN := FPRFActions.GetActionIEN(lvPRF.ItemIndex);
 | 
|---|
| [459] | 405 |                             end;
 | 
|---|
 | 406 |                         end;
 | 
|---|
 | 407 |         end;
 | 
|---|
 | 408 |       end;
 | 
|---|
 | 409 |     end;
 | 
|---|
 | 410 |   finally
 | 
|---|
 | 411 |     if Assigned(uConsultsList) then uConsultsList.Free;
 | 
|---|
 | 412 |     frmNoteProperties.Free;
 | 
|---|
 | 413 |   end;
 | 
|---|
 | 414 | end;
 | 
|---|
 | 415 | 
 | 
|---|
 | 416 | { Form events }
 | 
|---|
 | 417 | 
 | 
|---|
 | 418 | procedure TfrmNoteProperties.FormShow(Sender: TObject);
 | 
|---|
 | 419 | begin
 | 
|---|
 | 420 |   //if cboNewTitle.Text = '' then PostMessage(Handle, UM_DELAYEVENT, 0, 0);
 | 
|---|
 | 421 | end;
 | 
|---|
 | 422 | 
 | 
|---|
 | 423 | procedure TfrmNoteProperties.UMDelayEvent(var Message: TMessage);
 | 
|---|
 | 424 | { let the window finish displaying before dropping list box, otherwise listbox drop
 | 
|---|
 | 425 |   in the design position rather then new windows position (ORCtrls bug?) }
 | 
|---|
 | 426 | begin
 | 
|---|
 | 427 | //  Screen.Cursor := crArrow;
 | 
|---|
 | 428 | //  FFixCursor := TRUE;
 | 
|---|
 | 429 | //  cboNewTitle.DroppedDown := True;
 | 
|---|
 | 430 | //  lblDateTime.Visible := False;
 | 
|---|
 | 431 | //  lblAuthor.Visible   := False;
 | 
|---|
 | 432 | //  lblCosigner.Visible := False;
 | 
|---|
 | 433 | end;
 | 
|---|
 | 434 | 
 | 
|---|
 | 435 | { General calls }
 | 
|---|
 | 436 | 
 | 
|---|
 | 437 | procedure TfrmNoteProperties.SetCosignerRequired(DoSetup: boolean);
 | 
|---|
 | 438 | { called initially & whenever title or author changes }
 | 
|---|
 | 439 | begin
 | 
|---|
 | 440 |   if FDocType = TYP_ADDENDUM then
 | 
|---|
 | 441 |   begin
 | 
|---|
 | 442 |     lblCosigner.Visible := AskCosignerForDocument(FAddend, cboAuthor.ItemIEN)
 | 
|---|
 | 443 |   end else
 | 
|---|
 | 444 |   begin
 | 
|---|
 | 445 |     if cboNewTitle.ItemIEN = 0
 | 
|---|
| [460] | 446 |       then lblCosigner.Visible := AskCosignerForTitle(FDocType,            cboAuthor.ItemIEN, calNote.FMDateTime)
 | 
|---|
 | 447 |       else lblCosigner.Visible := AskCosignerForTitle(cboNewTitle.ItemIEN, cboAuthor.ItemIEN, calNote.FMDateTime);
 | 
|---|
| [459] | 448 |   end;
 | 
|---|
 | 449 |   cboCosigner.Visible := lblCosigner.Visible;
 | 
|---|
 | 450 |   if DoSetup then
 | 
|---|
 | 451 |     begin
 | 
|---|
 | 452 |       if lblCosigner.Visible then
 | 
|---|
 | 453 |       begin
 | 
|---|
 | 454 |         if FCosignIEN = 0 then
 | 
|---|
 | 455 |         begin
 | 
|---|
 | 456 |           FCosignIEN  := FLastCosigner;
 | 
|---|
 | 457 |           FCosignName := FLastCosignerName;
 | 
|---|
 | 458 |         end;
 | 
|---|
 | 459 |         if FCosignIEN = 0 then DefaultCosigner(FCosignIEN, FCosignName);
 | 
|---|
 | 460 |         cboCosigner.InitLongList(FCosignName);
 | 
|---|
 | 461 |         if FCosignIEN > 0 then cboCosigner.SelectByIEN(FCosignIEN);
 | 
|---|
 | 462 |       end
 | 
|---|
 | 463 |       else   // if lblCosigner not visible, clear values  {v19.10 - RV}
 | 
|---|
 | 464 |       begin
 | 
|---|
 | 465 |         FCosignIEN  := 0;
 | 
|---|
 | 466 |         FCosignName := '';
 | 
|---|
 | 467 |         cboCosigner.ItemIndex := -1;
 | 
|---|
 | 468 |       end;
 | 
|---|
 | 469 |     end;
 | 
|---|
 | 470 | end;
 | 
|---|
 | 471 | 
 | 
|---|
 | 472 | procedure TfrmNoteProperties.ShowRequestList(ShouldShow: Boolean);
 | 
|---|
 | 473 | { called initially & whenever title changes }
 | 
|---|
 | 474 | const
 | 
|---|
 | 475 |   ALL_CONSULTS        = 'The following consults are currently available for selection:';
 | 
|---|
 | 476 |   UNRESOLVED_CONSULTS = 'The following consults are currently awaiting resolution:';
 | 
|---|
 | 477 | var
 | 
|---|
 | 478 |   i: Integer;
 | 
|---|
 | 479 |   SavedIEN: integer;
 | 
|---|
 | 480 | begin
 | 
|---|
| [460] | 481 |   ShouldShow := ShouldShow and (FCallingTab = CT_NOTES);
 | 
|---|
| [459] | 482 |   if FDocType = TYP_ADDENDUM then ShouldShow := False;
 | 
|---|
| [460] | 483 |   pnlConsults.Visible := ShouldShow;
 | 
|---|
| [459] | 484 |   if ShouldShow then
 | 
|---|
 | 485 |   begin
 | 
|---|
 | 486 |     SavedIEN := lstRequests.ItemIEN;
 | 
|---|
| [460] | 487 |     ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlConsults.Height;
 | 
|---|
| [459] | 488 |     lstRequests.Items.Clear;
 | 
|---|
 | 489 |     if uConsultsList.Count = 0 then ListConsultRequests(uConsultsList);
 | 
|---|
 | 490 |     if uShowUnresolvedOnly then
 | 
|---|
 | 491 |     begin
 | 
|---|
 | 492 |       for i := 0 to uConsultsList.Count - 1 do
 | 
|---|
 | 493 |         if Pos(Piece(uConsultsList[i], U, 5), ACTIVE_STATUS) > 0 then
 | 
|---|
 | 494 |           lstRequests.Items.Add(uConsultsList[i]);
 | 
|---|
 | 495 |       lblConsult2.Caption := UNRESOLVED_CONSULTS;
 | 
|---|
 | 496 |     end
 | 
|---|
 | 497 |     else
 | 
|---|
 | 498 |     begin
 | 
|---|
 | 499 |       lblConsult2.Caption := ALL_CONSULTS;
 | 
|---|
 | 500 |       lstRequests.Items.Assign(uConsultsList);
 | 
|---|
 | 501 |     end;
 | 
|---|
 | 502 |     lblConsult1.Visible := (cboNewTitle.ItemIndex > -1);
 | 
|---|
 | 503 |     lstRequests.SelectByIEN(SavedIEN);
 | 
|---|
| [460] | 504 |     btnDetails.Enabled := (lstRequests.ItemIndex > -1);
 | 
|---|
 | 505 |   end
 | 
|---|
| [459] | 506 | end;
 | 
|---|
 | 507 | 
 | 
|---|
 | 508 | procedure TfrmNoteProperties.ShowSurgCaseList(ShouldShow: Boolean);
 | 
|---|
 | 509 | { called initially & whenever title changes }
 | 
|---|
 | 510 | begin
 | 
|---|
| [460] | 511 |   pnlSurgery.Visible := ShouldShow;
 | 
|---|
| [459] | 512 |   if FDocType = TYP_ADDENDUM then ShouldShow := False;
 | 
|---|
 | 513 |   if ShouldShow then
 | 
|---|
 | 514 |   begin
 | 
|---|
| [460] | 515 |     ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlSurgery.Height;
 | 
|---|
| [459] | 516 |     if lstSurgery.Items.Count = 0 then ListSurgeryCases(lstSurgery.Items);
 | 
|---|
| [460] | 517 |   end
 | 
|---|
| [459] | 518 | end;
 | 
|---|
 | 519 | 
 | 
|---|
 | 520 | { cboNewTitle events }
 | 
|---|
 | 521 | 
 | 
|---|
 | 522 | procedure TfrmNoteProperties.cboNewTitleNeedData(Sender: TObject; const StartFrom: string;
 | 
|---|
 | 523 |   Direction, InsertAt: Integer);
 | 
|---|
 | 524 | begin
 | 
|---|
 | 525 |   case FCallingTab of
 | 
|---|
 | 526 |     CT_CONSULTS:  begin
 | 
|---|
 | 527 |                     if FIsClinProcNote then
 | 
|---|
 | 528 |                       cboNewTitle.ForDataUse(SubSetOfClinProcTitles(StartFrom, Direction, FIDNoteTitlesOnly))
 | 
|---|
 | 529 |                     else
 | 
|---|
 | 530 |                       cboNewTitle.ForDataUse(SubSetOfConsultTitles(StartFrom, Direction, FIDNoteTitlesOnly));
 | 
|---|
 | 531 |                   end;
 | 
|---|
 | 532 |     CT_SURGERY:   cboNewTitle.ForDataUse(SubSetOfSurgeryTitles(StartFrom, Direction, FClassName));
 | 
|---|
 | 533 |     CT_NOTES:     cboNewTitle.ForDataUse(SubSetOfNoteTitles(StartFrom, Direction, FIDNoteTitlesOnly));
 | 
|---|
 | 534 |   end;
 | 
|---|
 | 535 | end;
 | 
|---|
 | 536 | 
 | 
|---|
 | 537 | procedure TfrmNoteProperties.cboNewTitleEnter(Sender: TObject);
 | 
|---|
 | 538 | begin
 | 
|---|
 | 539 |   FLastTitle := 0;
 | 
|---|
 | 540 | end;
 | 
|---|
 | 541 | 
 | 
|---|
 | 542 | procedure TfrmNoteProperties.cboNewTitleMouseClick(Sender: TObject);
 | 
|---|
| [460] | 543 | const
 | 
|---|
 | 544 |   TX_NEED_CONSULT_TITLE = 'You currently have unresolved consults awaiting completion.' + CRLF +
 | 
|---|
 | 545 |                           'The selected title cannot be used to complete consults.' + CRLF +
 | 
|---|
 | 546 |                           'You must select a Consults title to complete a consult.' + CRLF + CRLF +
 | 
|---|
 | 547 |                           'Answer "YES" to continue with this title and not complete a consult.' + CRLF +
 | 
|---|
 | 548 |                           'Answer "NO" to select a different title.' + CRLF + CRLF +
 | 
|---|
 | 549 |                           'Do you want to use this title and continue?';                          
 | 
|---|
 | 550 |   TC_NOT_CONSULT_TITLE = 'Not a consult title';
 | 
|---|
 | 551 | var
 | 
|---|
 | 552 |   WantsToCompleteConsult: boolean;
 | 
|---|
 | 553 |   ConsultTitle: boolean;
 | 
|---|
| [459] | 554 | begin
 | 
|---|
 | 555 |   with cboNewTitle do
 | 
|---|
 | 556 |     if (ItemIEN > 0) and (ItemIEN = FLastTitle) then Exit
 | 
|---|
 | 557 |     else if ItemIEN = 0 then
 | 
|---|
 | 558 |       begin
 | 
|---|
 | 559 |         if FLastTitle > 0 then SelectByIEN(FLastTitle)
 | 
|---|
 | 560 |         else ItemIndex := -1;
 | 
|---|
 | 561 |         //Exit;
 | 
|---|
 | 562 |       end;
 | 
|---|
 | 563 |     case FCallingTab of
 | 
|---|
 | 564 |       CT_CONSULTS:  ;  // no action
 | 
|---|
 | 565 |       CT_SURGERY :  ;  // no action
 | 
|---|
| [460] | 566 |       CT_NOTES   :  begin            // v26.5 (RV) main changes here
 | 
|---|
 | 567 |                       WantsToCompleteConsult := False;
 | 
|---|
 | 568 |                       ConsultTitle := IsConsultTitle(cboNewTitle.ItemIEN);
 | 
|---|
 | 569 |                       if (pnlConsults.Visible) and
 | 
|---|
 | 570 |                          (lstRequests.Items.Count > 0) and
 | 
|---|
 | 571 |                          (not FStarting) and
 | 
|---|
 | 572 |                          (*(lstRequests.ItemID <> '') and*)
 | 
|---|
 | 573 |                          (not ConsultTitle) then
 | 
|---|
 | 574 |                           WantsToCompleteConsult := (InfoBox(TX_NEED_CONSULT_TITLE,
 | 
|---|
 | 575 |                                                             TC_NOT_CONSULT_TITLE,
 | 
|---|
 | 576 |                                                             MB_ICONWARNING or MB_YESNO or MB_DEFBUTTON2) = IDNO);
 | 
|---|
 | 577 |                       if WantsToCompleteConsult and (not ConsultTitle) then cboNewTitle.ItemIndex := -1;
 | 
|---|
 | 578 |                       SetGenericFormSize;
 | 
|---|
 | 579 |                       ShowRequestList(WantsToCompleteConsult or ConsultTitle);
 | 
|---|
 | 580 |                       ShowSurgCaseList(IsSurgeryTitle(cboNewTitle.ItemIEN));
 | 
|---|
 | 581 |                       ShowPRFList(IsPRFTitle(cboNewTitle.ItemIEN));
 | 
|---|
 | 582 |                     end;
 | 
|---|
| [459] | 583 |     end;
 | 
|---|
 | 584 |   SetCosignerRequired(True);
 | 
|---|
 | 585 |   FLastTitle := cboNewTitle.ItemIEN;
 | 
|---|
 | 586 | end;
 | 
|---|
 | 587 | 
 | 
|---|
 | 588 | procedure TfrmNoteProperties.cboNewTitleExit(Sender: TObject);
 | 
|---|
 | 589 | begin
 | 
|---|
 | 590 |   if cboNewTitle.ItemIEN <> FLastTitle then cboNewTitleMouseClick(Self);
 | 
|---|
 | 591 | end;
 | 
|---|
 | 592 | 
 | 
|---|
 | 593 | procedure TfrmNoteProperties.cboNewTitleDblClick(Sender: TObject);
 | 
|---|
 | 594 | begin
 | 
|---|
 | 595 |   cmdOKClick(Self);
 | 
|---|
 | 596 | end;
 | 
|---|
 | 597 | 
 | 
|---|
 | 598 | { cboAuthor & cboCosigner events }
 | 
|---|
 | 599 | 
 | 
|---|
 | 600 | procedure TfrmNoteProperties.NewPersonNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
 | 601 |   Direction, InsertAt: Integer);
 | 
|---|
 | 602 | begin
 | 
|---|
 | 603 |   (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
 | 
|---|
 | 604 | end;
 | 
|---|
 | 605 | 
 | 
|---|
 | 606 | procedure TfrmNoteProperties.cboAuthorEnter(Sender: TObject);
 | 
|---|
 | 607 | begin
 | 
|---|
 | 608 |   FLastAuthor := 0;
 | 
|---|
 | 609 | end;
 | 
|---|
 | 610 | 
 | 
|---|
 | 611 | procedure TfrmNoteProperties.cboAuthorMouseClick(Sender: TObject);
 | 
|---|
 | 612 | begin
 | 
|---|
 | 613 |   SetCosignerRequired(True);
 | 
|---|
 | 614 |   FLastAuthor := cboAuthor.ItemIEN;
 | 
|---|
 | 615 | end;
 | 
|---|
 | 616 | 
 | 
|---|
 | 617 | procedure TfrmNoteProperties.cboAuthorExit(Sender: TObject);
 | 
|---|
 | 618 | begin
 | 
|---|
 | 619 |   if cboAuthor.ItemIEN <> FLastAuthor then cboAuthorMouseClick(Self);
 | 
|---|
 | 620 | end;
 | 
|---|
 | 621 | 
 | 
|---|
 | 622 | procedure TfrmNoteProperties.cboCosignerExit(Sender: TObject);
 | 
|---|
 | 623 | { make sure FCosign fields stay up to date in case SetCosigner gets called again }
 | 
|---|
 | 624 | //var x: string;
 | 
|---|
 | 625 | begin
 | 
|---|
| [460] | 626 |   with cboCosigner do if ((Text = '') or (ItemIEN = 0)) then
 | 
|---|
 | 627 |   begin
 | 
|---|
 | 628 |     ItemIndex := -1;
 | 
|---|
 | 629 |     FCosignIEN := 0;
 | 
|---|
 | 630 |     FCosignName := '';
 | 
|---|
 | 631 |     exit;
 | 
|---|
 | 632 |   end;
 | 
|---|
| [459] | 633 |   FCosignIEN := cboCosigner.ItemIEN;
 | 
|---|
 | 634 |   FCosignName := Piece(cboCosigner.Items[cboCosigner.ItemIndex], U, 2);
 | 
|---|
 | 635 | end;
 | 
|---|
 | 636 | 
 | 
|---|
 | 637 | { Command Button events }
 | 
|---|
 | 638 | 
 | 
|---|
 | 639 | procedure TfrmNoteProperties.cmdOKClick(Sender: TObject);
 | 
|---|
 | 640 | var
 | 
|---|
 | 641 |   ErrMsg, WhyNot, AlertMsg: string;
 | 
|---|
 | 642 | begin
 | 
|---|
 | 643 |   cmdOK.SetFocus;                                // make sure cbo exit events fire
 | 
|---|
 | 644 |   Application.ProcessMessages;
 | 
|---|
 | 645 | (*  case FCallingTab of
 | 
|---|
 | 646 |     CT_CONSULTS:  ;  //no action
 | 
|---|
 | 647 |     CT_SURGERY :  ;  //no action
 | 
|---|
 | 648 |     CT_NOTES   :  if IsConsultTitle(cboNewTitle.ItemIEN) then
 | 
|---|
 | 649 |                     ShowRequestList(True)
 | 
|---|
 | 650 |                   else if IsSurgeryTitle(cboNewTitle.ItemIEN) then
 | 
|---|
 | 651 | { TODO -oRich V. -cSurgery/TIU : Disallow new surgery notes here - MUST be business rule for "BE ENTERED": }
 | 
|---|
 | 652 |      //  New TIU RPC required, to check user and title against business rules.
 | 
|---|
 | 653 |      //  Must allow OK button click if surgery title on edit of surgery original.
 | 
|---|
 | 654 |      //  Can't pre-screen titles because need to allow change on edit.
 | 
|---|
 | 655 |      //  May need additional logic here to distinguish between NEW or EDITED document.
 | 
|---|
 | 656 |                     ShowSurgCaseList(True)
 | 
|---|
 | 657 |                   else
 | 
|---|
 | 658 |                     begin
 | 
|---|
 | 659 |                        ShowRequestList(False);
 | 
|---|
 | 660 |                        ShowSurgCaseList(False);
 | 
|---|
| [460] | 661 |                        ShowPRFList(False);
 | 
|---|
| [459] | 662 |                     end;
 | 
|---|
 | 663 |   end;*)
 | 
|---|
 | 664 |   SetCosignerRequired(False);
 | 
|---|
 | 665 |   ErrMsg := '';
 | 
|---|
| [460] | 666 |   if cboNewTitle.ItemIEN = 0 then
 | 
|---|
 | 667 |     ErrMsg := ErrMsg + TX_REQ_TITLE ;
 | 
|---|
 | 668 |   if ErrMsg = '' then
 | 
|---|
| [459] | 669 |     begin
 | 
|---|
| [460] | 670 |       if FDocType = TYP_ADDENDUM then
 | 
|---|
 | 671 |         begin
 | 
|---|
 | 672 |           if OneNotePerVisit(TYP_ADDENDUM, Patient.DFN, Encounter.VisitStr)then
 | 
|---|
 | 673 |             ErrMsg := ErrMsg + TX_ONE_NOTE_PER_VISIT1
 | 
|---|
 | 674 |                      + 'Addendum to ' + Piece(cboNewTitle.Items[cboNewTitle.ItemIndex],U,2)
 | 
|---|
 | 675 |                      + TX_ONE_NOTE_PER_VISIT2;
 | 
|---|
 | 676 |         end
 | 
|---|
 | 677 |         //code added 12/2002  check note parm - one per visit  GRE
 | 
|---|
 | 678 |       else if OneNotePerVisit(CboNewTitle.ItemIEN, Patient.DFN, Encounter.VisitStr)then
 | 
|---|
 | 679 |             ErrMsg := ErrMsg + TX_ONE_NOTE_PER_VISIT1
 | 
|---|
 | 680 |                      + Piece(cboNewTitle.Items[cboNewTitle.ItemIndex],U,2)
 | 
|---|
 | 681 |                      + TX_ONE_NOTE_PER_VISIT2;
 | 
|---|
 | 682 |     end;
 | 
|---|
 | 683 |   if ErrMsg = '' then
 | 
|---|
 | 684 |     begin
 | 
|---|
| [459] | 685 |       if FIDNoteTitlesOnly then
 | 
|---|
 | 686 |         begin
 | 
|---|
 | 687 |           if (not CanTitleBeIDChild(cboNewTitle.ItemIEN, WhyNot)) then
 | 
|---|
 | 688 |             ErrMsg := ErrMsg + CRLF + WhyNot;
 | 
|---|
 | 689 |         end
 | 
|---|
 | 690 |       else
 | 
|---|
 | 691 |         begin
 | 
|---|
 | 692 |           if ((pnlConsults.Visible) and (lstRequests.ItemIndex < 0)) then
 | 
|---|
 | 693 |             ErrMsg := ErrMsg + TX_REQ_REQUEST
 | 
|---|
 | 694 |           else if ((pnlSurgery.Visible) and (lstSurgery.ItemIndex < 0)) then
 | 
|---|
 | 695 |             ErrMsg := ErrMsg + TX_REQ_SURGCASE
 | 
|---|
| [460] | 696 |           else if (pnlPRF.Visible) then
 | 
|---|
 | 697 |           begin
 | 
|---|
 | 698 |             if (lvPRF.ItemIndex < 0) then
 | 
|---|
 | 699 |               ErrMsg := ErrMsg + TX_REQ_PRF_ACTION
 | 
|---|
 | 700 |             else if FPRFActions.SelActionHasNote(lvPRF.ItemIndex) then
 | 
|---|
 | 701 |               ErrMsg := ErrMsg + TX_REQ_PRF_NOTE;
 | 
|---|
 | 702 |           end;
 | 
|---|
| [459] | 703 |         end;
 | 
|---|
 | 704 |     end;
 | 
|---|
 | 705 |   if cboAuthor.ItemIEN = 0   then ErrMsg := ErrMsg + TX_REQ_AUTHOR;
 | 
|---|
 | 706 |   if not calNote.IsValid     then ErrMsg := ErrMsg + TX_REQ_REFDATE;
 | 
|---|
 | 707 |   if calNote.IsValid and (calNote.FMDateTime > FMNow)    then ErrMsg := ErrMsg + TX_NO_FUTURE;
 | 
|---|
 | 708 |   if cboCosigner.Visible then
 | 
|---|
 | 709 |     begin
 | 
|---|
 | 710 |        if (cboCosigner.ItemIEN = 0)     then ErrMsg := ErrMsg + TX_REQ_COSIGNER;
 | 
|---|
 | 711 |       //if (cboCosigner.ItemIEN = User.DUZ) then ErrMsg := TX_COS_SELF;  // (CanCosign will do this check)
 | 
|---|
| [460] | 712 |       if (cboCosigner.ItemIEN > 0) and not CanCosign(cboNewTitle.ItemIEN, FDocType, cboCosigner.ItemIEN, calNote.FMDateTime)
 | 
|---|
| [459] | 713 |         then ErrMsg := cboCosigner.Text + TX_COS_AUTH;
 | 
|---|
 | 714 |         //code added 02/2003  check if User is Inactive   GRE
 | 
|---|
 | 715 |         if UserInactive(IntToStr(cboCosigner.ItemIEN)) then
 | 
|---|
 | 716 |         if (InfoBox(fNoteProps.TX_USER_INACTIVE, TC_INACTIVE_USER, MB_OKCANCEL)= IDCANCEL) then exit;
 | 
|---|
 | 717 |     end;
 | 
|---|
 | 718 |   if FIsClinProcNote then
 | 
|---|
 | 719 |     begin
 | 
|---|
 | 720 |       if (FCPStatusFlag = CP_INSTR_INCOMPLETE) then
 | 
|---|
 | 721 |         begin
 | 
|---|
 | 722 |           if cboProcSummCode.ItemIEN = 0 then ErrMsg := ErrMsg + TX_REQ_PROCSUMMCODE
 | 
|---|
 | 723 |             else FProcSummCode := cboProcSummCode.ItemIEN;
 | 
|---|
 | 724 |           if not calProcDateTime.IsValid then ErrMsg := ErrMsg + TX_REQ_PROCDATETIME
 | 
|---|
 | 725 |            else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
 | 
|---|
 | 726 |            else FProcDateTime := calProcDateTime.FMDateTime;
 | 
|---|
 | 727 |         end
 | 
|---|
 | 728 |       else
 | 
|---|
 | 729 |         begin
 | 
|---|
 | 730 |           FProcSummCode := cboProcSummCode.ItemIEN;
 | 
|---|
 | 731 |           if (calProcDateTime.FMDateTime > 0) then
 | 
|---|
 | 732 |             begin
 | 
|---|
 | 733 |               if (not calProcDateTime.IsValid) then ErrMsg := ErrMsg + TX_INVALID_PROCDATETIME
 | 
|---|
 | 734 |                else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
 | 
|---|
 | 735 |                else FProcDateTime := calProcDateTime.FMDateTime;
 | 
|---|
 | 736 |             end;
 | 
|---|
 | 737 |         end;
 | 
|---|
 | 738 |     end;
 | 
|---|
 | 739 |   if ShowMsgOn(Length(ErrMsg) > 0, ErrMsg, TC_REQ_FIELDS)
 | 
|---|
 | 740 |     then Exit
 | 
|---|
 | 741 |     else ModalResult := mrOK;
 | 
|---|
 | 742 | 
 | 
|---|
 | 743 |     //Code added to handle inactive users.  2/26/03
 | 
|---|
 | 744 |   if ShowMsgOn(Length(AlertMsg) > 0, AlertMsg, TC_INACTIVE_USER ) then
 | 
|---|
 | 745 |      ModalResult := mrOK;
 | 
|---|
 | 746 | end;
 | 
|---|
 | 747 | 
 | 
|---|
 | 748 | procedure TfrmNoteProperties.cmdCancelClick(Sender: TObject);
 | 
|---|
 | 749 | begin
 | 
|---|
 | 750 |   ModalResult := mrCancel;
 | 
|---|
 | 751 |   //Close;
 | 
|---|
 | 752 | end;
 | 
|---|
 | 753 | 
 | 
|---|
 | 754 | procedure TfrmNoteProperties.cboNewTitleDropDownClose(Sender: TObject);
 | 
|---|
 | 755 | begin
 | 
|---|
 | 756 | //  if FFixCursor then
 | 
|---|
 | 757 | //  begin
 | 
|---|
 | 758 | //    Screen.Cursor := crDefault;
 | 
|---|
 | 759 | //    FFixCursor := FALSE;
 | 
|---|
 | 760 | //  end;
 | 
|---|
 | 761 | //  lblDateTime.Visible := True;
 | 
|---|
 | 762 | //  lblAuthor.Visible   := True;
 | 
|---|
 | 763 | //  lblCosigner.Visible := True;
 | 
|---|
 | 764 | end;
 | 
|---|
 | 765 | 
 | 
|---|
 | 766 | procedure TfrmNoteProperties.cboCosignerNeedData(Sender: TObject;
 | 
|---|
 | 767 |   const StartFrom: String; Direction, InsertAt: Integer);
 | 
|---|
 | 768 | begin
 | 
|---|
 | 769 |   (Sender as TORComboBox).ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FToday));
 | 
|---|
 | 770 | end;
 | 
|---|
 | 771 | 
 | 
|---|
 | 772 | procedure TfrmNoteProperties.ShowClinProcFields(YesNo: boolean);
 | 
|---|
 | 773 | begin
 | 
|---|
 | 774 |   lblProcSummCode.Visible := YesNo;
 | 
|---|
 | 775 |   cboProcSummCode.Visible := YesNo;
 | 
|---|
 | 776 |   lblProcDateTime.Visible := YesNo;
 | 
|---|
 | 777 |   calProcDateTime.Visible := YesNo;
 | 
|---|
 | 778 | end;
 | 
|---|
 | 779 | 
 | 
|---|
 | 780 | procedure TfrmNoteProperties.btnShowListClick(Sender: TObject);
 | 
|---|
 | 781 | begin
 | 
|---|
 | 782 |   FormatRequestList;
 | 
|---|
 | 783 | end;
 | 
|---|
 | 784 | 
 | 
|---|
 | 785 | procedure TfrmNoteProperties.FormatRequestList;
 | 
|---|
 | 786 | const
 | 
|---|
 | 787 |   SHOW_UNRESOLVED = 'Show Unresolved';
 | 
|---|
 | 788 |   SHOW_ALL = 'Show All';
 | 
|---|
 | 789 | begin
 | 
|---|
 | 790 |   uShowUnresolvedOnly := not uShowUnresolvedOnly;
 | 
|---|
 | 791 |   with btnShowList do
 | 
|---|
 | 792 |     if uShowUnresolvedOnly then
 | 
|---|
 | 793 |       Caption := SHOW_ALL
 | 
|---|
 | 794 |     else
 | 
|---|
 | 795 |       Caption := SHOW_UNRESOLVED;
 | 
|---|
| [460] | 796 |   with uUnresolvedConsults do if (UnresolvedConsultsExist and ShowNagScreen) then pnlConsults.Visible := TRUE;  //v26.27 (RV)
 | 
|---|
 | 797 |   ShowRequestList(pnlConsults.Visible);      //v26.5 (RV)
 | 
|---|
 | 798 |   //ShowRequestList(True);                   //v26.5 (RV)
 | 
|---|
| [459] | 799 | end;
 | 
|---|
 | 800 | 
 | 
|---|
 | 801 | procedure TfrmNoteProperties.FormResize(Sender: TObject);
 | 
|---|
 | 802 | const
 | 
|---|
 | 803 |   SPACE: integer = 10;
 | 
|---|
 | 804 | begin
 | 
|---|
 | 805 |   cboNewTitle.Width := Self.ClientWidth - cboNewTitle.Left - cmdOK.Width - SPACE * 2;
 | 
|---|
 | 806 |   cmdOK.Left := Self.ClientWidth - cmdOK.Width - SPACE;
 | 
|---|
 | 807 |   cmdCancel.Left := Self.ClientWidth - cmdCancel.Width - SPACE;
 | 
|---|
 | 808 |   if (cboAuthor.Width + cboAuthor.Left) > Self.ClientWidth then
 | 
|---|
 | 809 |     cboAuthor.Width := Self.ClientWidth - cboAuthor.Left - SPACE;
 | 
|---|
 | 810 | end;
 | 
|---|
 | 811 | 
 | 
|---|
 | 812 | procedure TfrmNoteProperties.calNoteEnter(Sender: TObject);
 | 
|---|
 | 813 | begin
 | 
|---|
 | 814 |   if Sender is TORDateBox then
 | 
|---|
 | 815 |     (Sender as TORDateBox).SelectAll;
 | 
|---|
 | 816 | end;
 | 
|---|
 | 817 | 
 | 
|---|
| [460] | 818 | procedure TfrmNoteProperties.ShowPRFList(ShouldShow: Boolean);
 | 
|---|
 | 819 | begin
 | 
|---|
 | 820 |   pnlPRF.Visible := ShouldShow and not (FDocType = TYP_ADDENDUM);
 | 
|---|
 | 821 |   if pnlPRF.Visible then
 | 
|---|
 | 822 |   begin
 | 
|---|
 | 823 |     ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlPRF.Height;
 | 
|---|
 | 824 |     if FPRFActions = nil then
 | 
|---|
 | 825 |       FPRFActions := TPRFActions.Create;
 | 
|---|
 | 826 |     FPRFActions.Load(cboNewTitle.ItemIEN,Patient.DFN);
 | 
|---|
 | 827 |     if RPCBrokerV.Results.Count <> 0 then
 | 
|---|
 | 828 |       lblPRF.Caption := PRF_LABEL
 | 
|---|
 | 829 |     else
 | 
|---|
 | 830 |       lblPRF.Caption := 'No Linkable Actions for this Patient and/or Title.';
 | 
|---|
 | 831 |     FPRFActions.ShowActionsOnList(lvPRF);
 | 
|---|
 | 832 |     //Fix for CQ: 6926
 | 
|---|
 | 833 |     lvPRF.Columns.BeginUpdate;
 | 
|---|
 | 834 |     lvPRF.Columns.EndUpdate;
 | 
|---|
 | 835 |     //End Fix for CQ: 6926
 | 
|---|
 | 836 |   end
 | 
|---|
 | 837 | end;
 | 
|---|
 | 838 | 
 | 
|---|
 | 839 | procedure TfrmNoteProperties.SetGenericFormSize;
 | 
|---|
 | 840 | begin
 | 
|---|
 | 841 |   ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE;
 | 
|---|
 | 842 | end;
 | 
|---|
 | 843 | 
 | 
|---|
 | 844 | { TPRFActions }
 | 
|---|
 | 845 | 
 | 
|---|
 | 846 | constructor TPRFActions.Create;
 | 
|---|
 | 847 | begin
 | 
|---|
 | 848 |   inherited;
 | 
|---|
 | 849 |   FPRFActionList := TStringList.Create;
 | 
|---|
 | 850 | end;
 | 
|---|
 | 851 | 
 | 
|---|
 | 852 | destructor TPRFActions.Destroy;
 | 
|---|
 | 853 | begin
 | 
|---|
 | 854 |   FPRFActionList.Free;
 | 
|---|
 | 855 |   inherited;
 | 
|---|
 | 856 | end;
 | 
|---|
 | 857 | 
 | 
|---|
 | 858 | function TPRFActions.GetActionIEN(lstIndex: integer): String;
 | 
|---|
 | 859 | begin
 | 
|---|
 | 860 |   Result := Piece(FPRFActionList[lstIndex],U,ACTION_IEN);
 | 
|---|
 | 861 | end;
 | 
|---|
 | 862 | 
 | 
|---|
 | 863 | function TPRFActions.GetPRF_IEN(lstIndex: integer): integer;
 | 
|---|
 | 864 | begin
 | 
|---|
 | 865 |   Result := StrToInt(Piece(FPRFActionList[lstIndex],U,PRF_IEN));
 | 
|---|
 | 866 | end;
 | 
|---|
 | 867 | 
 | 
|---|
 | 868 | procedure TPRFActions.Load(TitleIEN : Int64; DFN : String);
 | 
|---|
 | 869 | begin
 | 
|---|
 | 870 |   CallV('TIU GET PRF ACTIONS', [TitleIEN,DFN]);
 | 
|---|
 | 871 |   FPRFActionList.Assign(RPCBrokerV.Results);
 | 
|---|
 | 872 | end;
 | 
|---|
 | 873 | 
 | 
|---|
 | 874 | function TPRFActions.SelActionHasNote(lstIndex: integer): boolean;
 | 
|---|
 | 875 | begin
 | 
|---|
 | 876 |   Result := false;
 | 
|---|
 | 877 |   if Piece(FPRFActionList[lstIndex],U,NOTE_IEN) <> '' then
 | 
|---|
 | 878 |     Result := true;
 | 
|---|
 | 879 | end;
 | 
|---|
 | 880 | 
 | 
|---|
 | 881 | procedure TPRFActions.ShowActionsOnList(DisplayList: TCaptionListView);
 | 
|---|
 | 882 | var
 | 
|---|
 | 883 |   i : integer;
 | 
|---|
 | 884 |   ListItem: TListItem;
 | 
|---|
 | 885 | begin
 | 
|---|
 | 886 |   DisplayList.Clear;
 | 
|---|
 | 887 |   for i := 0 to FPRFActionList.Count-1 do
 | 
|---|
 | 888 |   begin
 | 
|---|
 | 889 |     //Caption="Text for Screen Reader" SubItem1=Flag SubItem2=Date SubItem3=Action SubItem4=Note
 | 
|---|
 | 890 |     ListItem := DisplayList.Items.Add;
 | 
|---|
 | 891 |     ListItem.Caption := PRF_LABEL; //Screen readers don't read the first column title on a listview.
 | 
|---|
 | 892 |     ListItem.SubItems.Add(Piece(FPRFActionList[i],U,FLAG_NAME));
 | 
|---|
 | 893 |     ListItem.SubItems.Add(Piece(FPRFActionList[i],U,ACTION_DATE));
 | 
|---|
 | 894 |     ListItem.SubItems.Add(Piece(FPRFActionList[i],U,ACTION_NAME));
 | 
|---|
 | 895 |     if SelActionHasNote(i) then
 | 
|---|
 | 896 |       ListItem.SubItems.Add('Yes')
 | 
|---|
 | 897 |     else
 | 
|---|
 | 898 |       ListItem.SubItems.Add('No');
 | 
|---|
 | 899 |   end;
 | 
|---|
 | 900 | end;
 | 
|---|
 | 901 | 
 | 
|---|
 | 902 | procedure TfrmNoteProperties.FormDestroy(Sender: TObject);
 | 
|---|
 | 903 | begin
 | 
|---|
 | 904 |   FPRFActions.Free;
 | 
|---|
 | 905 | end;
 | 
|---|
 | 906 | 
 | 
|---|
 | 907 | procedure TfrmNoteProperties.btnDetailsClick(Sender: TObject);
 | 
|---|
 | 908 | var
 | 
|---|
 | 909 |   ConsultDetail: TStringList;
 | 
|---|
 | 910 | begin
 | 
|---|
 | 911 |   if lstRequests.ItemIEN <= 0 then exit;
 | 
|---|
 | 912 |   ConsultDetail := TStringList.Create;
 | 
|---|
 | 913 |   try
 | 
|---|
 | 914 |     LoadConsultDetail(ConsultDetail, lstRequests.ItemIEN) ;
 | 
|---|
 | 915 |     ReportBox(ConsultDetail, 'Consult Details: #' + lstRequests.ItemID + ' - ' +
 | 
|---|
 | 916 |                Piece(lstRequests.Items[lstRequests.ItemIndex], U, 3), TRUE);
 | 
|---|
 | 917 |   finally
 | 
|---|
 | 918 |     ConsultDetail.Free;
 | 
|---|
 | 919 |   end;
 | 
|---|
 | 920 | end;
 | 
|---|
 | 921 | 
 | 
|---|
 | 922 | procedure TfrmNoteProperties.lstRequestsChange(Sender: TObject);
 | 
|---|
 | 923 | begin
 | 
|---|
 | 924 |   btnDetails.Enabled := (lstRequests.ItemIEN > 0);
 | 
|---|
 | 925 | end;
 | 
|---|
 | 926 | 
 | 
|---|
| [459] | 927 | end.
 | 
|---|