Changeset 830 for cprs/trunk/CPRS-Chart/uCore.pas
- Timestamp:
- Jul 7, 2010, 4:51:54 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/trunk/CPRS-Chart/uCore.pas
r456 r830 159 159 destructor Destroy; override; 160 160 procedure Clear; 161 procedure EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char); 161 162 function NeedVisit: Boolean; 162 163 property DateTime: TFMDateTime read FDateTime write SetDateTime; 163 164 property Inpatient: Boolean read FInpatient write SetInpatient; 164 165 property Location: Integer read FLocation write SetLocation; 165 property LocationName: string read GetLocationName ;166 property LocationText: string read GetLocationText ;166 property LocationName: string read GetLocationName write FLocationName; 167 property LocationText: string read GetLocationText write FLocationText; 167 168 property Provider: Int64 read FProvider write SetProvider; 168 169 property ProviderName: string read GetProviderName; … … 181 182 FSignState: Integer; 182 183 FParentID : string; 184 FUser : Int64; 185 FOrderDG : String; 186 FDCOrder : boolean; 187 FDelay : boolean; 183 188 constructor Create(AnItemType: Integer; const AnID, AText, AGroupName: string; 184 ASignState: Integer; AParentID: string = '' );189 ASignState: Integer; AParentID: string = ''; User: int64 = 0; OrderDG: string = ''; DCOrder: boolean = False; Delay: boolean = False); 185 190 public 186 191 property ItemType: Integer read FItemType; … … 190 195 property SignState: Integer read FSignState write FSignState; 191 196 property ParentID : string read FParentID; 197 property User: Int64 read FUser write FUser; 198 property OrderDG: string read FOrderDG write FOrderDG; 199 property DCOrder: boolean read FDCOrder write FDCOrder; 200 property Delay: boolean read FDelay write FDelay; 192 201 end; 193 202 … … 208 217 constructor Create; 209 218 destructor Destroy; override; 210 procedure Add(ItemType: Integer; const AnID, ItemText, GroupName: string; SignState: Integer; AParentID: string = ''); 219 procedure Add(ItemType: Integer; const AnID, ItemText, GroupName: string; SignState: Integer; AParentID: string = ''; 220 User: int64 = 0; OrderDG: String = ''; DCOrder: boolean = FALSE; Delay: boolean = FALSE); 211 221 procedure Clear; 212 222 function CanSign: Boolean; … … 367 377 TempEncounterLoc: Integer; // used to Save Encounter Location when user selected "Review Sign Changes" from "File" 368 378 TempEncounterLocName: string; // since in the path PatientRefresh is done prior to checking if patient has been admitted while entering OPT orders. 379 TempEncounterText: string; 380 TempEncounterDateTime: TFMDateTime; 381 TempEncounterVistCat: Char; 382 //TempOutEncounterLoc: Integer; 383 //TempOutEncounterLocName: string; 369 384 370 385 procedure NotifyOtherApps(const AppEvent, AppData: string); … … 372 387 procedure TerminateOtherAppNotification; 373 388 procedure GotoWebPage(const URL: WideString); 389 function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean; 390 374 391 375 392 implementation … … 410 427 SHORT_BROADCAST_TIMEOUT = 2000; // 2 seconds 411 428 MSG_TYPE: array[TMsgType] of String = ('V','D'); 429 430 function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean; 431 const 432 TX_DGSR_ERR = 'Unable to perform sensitive record checks'; 433 TC_DGSR_ERR = 'Error'; 434 TC_DGSR_SHOW = 'Restricted Record'; 435 TC_DGSR_DENY = 'Access Denied'; 436 TX_DGSR_YESNO = CRLF + 'Do you want to continue processing this patient record?'; 437 TC_NEXT_NOTIF = 'NEXT NOTIFICATION: '; 438 var 439 //AccessStatus: integer; 440 AMsg, PrefixC, PrefixT: string; 441 begin 442 Result := TRUE; 443 if Notifications.Active then 444 begin 445 PrefixT := Piece(Notifications.RecordID, U, 1) + CRLF + CRLF; 446 PrefixC := TC_NEXT_NOTIF; 447 end 448 else 449 begin 450 PrefixT := ''; 451 PrefixC := ''; 452 end; 453 CheckSensitiveRecordAccess(NewDFN, AccessStatus, AMsg); 454 case AccessStatus of 455 DGSR_FAIL: begin 456 InfoBox(PrefixT + TX_DGSR_ERR, PrefixC + TC_DGSR_ERR, MB_OK); 457 Result := FALSE; 458 end; 459 DGSR_NONE: { Nothing - allow access to the patient. }; 460 DGSR_SHOW: InfoBox(PrefixT + AMsg, PrefixC + TC_DGSR_SHOW, MB_OK); 461 DGSR_ASK: if InfoBox(PrefixT + AMsg + TX_DGSR_YESNO, PrefixC + TC_DGSR_SHOW, MB_YESNO or MB_ICONWARNING or 462 MB_DEFBUTTON2) = IDYES then LogSensitiveRecordAccess(NewDFN) 463 else Result := FALSE; 464 else begin 465 InfoBox(PrefixT + AMsg, PrefixC + TC_DGSR_DENY, MB_OK); 466 if Notifications.Active then Notifications.DeleteForCurrentUser; 467 Result := FALSE; 468 end; 469 end; 470 end; 412 471 413 472 function QueuePending: boolean; … … 740 799 end; 741 800 801 procedure TEncounter.EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char); 802 begin 803 Encounter.Location := Loc; 804 Encounter.LocationName := LocName; 805 Encounter.LocationText := LocText; 806 Encounter.VisitCategory := vCat; 807 Encounter.DateTime := DT;; 808 end; 809 742 810 procedure TEncounter.Clear; 743 811 { clears all the fields of an Encounter (usually done upon patient selection } … … 887 955 888 956 constructor TChangeItem.Create(AnItemType: Integer; const AnID, AText, AGroupName: string; 889 ASignState: Integer; AParentID: string );957 ASignState: Integer; AParentID: string; user: int64; OrderDG: string; DCOrder, Delay: boolean); 890 958 begin 891 959 FItemType := AnItemType; … … 895 963 FSignState := ASignState; 896 964 FParentID := AParentID; 965 FUser := User; 966 FOrderDG := OrderDG; 967 FDCOrder := DCOrder; 968 FDelay := Delay; 897 969 end; 898 970 … … 921 993 922 994 procedure TChanges.Add(ItemType: Integer; const AnID, ItemText, GroupName: string; 923 SignState: Integer; AParentID: string );995 SignState: Integer; AParentID: string; User: int64; OrderDG: String; DCOrder, Delay: boolean); 924 996 var 925 997 i: Integer; … … 948 1020 if not Found then 949 1021 begin 950 NewChangeItem := TChangeItem.Create(ItemType, AnID, ItemText, GroupName, SignState, AParentID );1022 NewChangeItem := TChangeItem.Create(ItemType, AnID, ItemText, GroupName, SignState, AParentID, User, OrderDG, DCOrder, Delay); 951 1023 case ItemType of 952 1024 CH_DOC: begin … … 1213 1285 { retrieves unsigned orders outside this session based on OR UNSIGNED ORDERS ON EXIT } 1214 1286 var 1215 i, CanSign: Integer; 1287 i, CanSign(*, OrderUser*): Integer; 1288 OrderUser: int64; 1216 1289 AnID: string; 1217 1290 HaveOrders, OtherOrders: TStringList; … … 1235 1308 for i := 0 to Pred(OtherOrders.Count) do 1236 1309 begin 1237 AnID := OtherOrders[i]; 1238 Add(CH_ORD, AnID, TextForOrder(AnID), 'Other Unsigned', CanSign); 1310 AnID := Piece(OtherOrders[i],U,1); 1311 if Piece(OtherOrders[i],U,2) = '' then OrderUser := 0 1312 else OrderUser := StrtoInt64(Piece(OtherOrders[i],U,2)); 1313 Add(CH_ORD, AnID, TextForOrder(AnID), 'Other Unsigned', CanSign,'', OrderUser); 1239 1314 end; 1240 1315 finally
Note:
See TracChangeset
for help on using the changeset viewer.