Ignore:
Timestamp:
Jul 7, 2010, 4:51:54 PM (14 years ago)
Author:
Kevin Toppenberg
Message:

Upgrading to version 27

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/trunk/CPRS-Chart/uCore.pas

    r456 r830  
    159159    destructor Destroy; override;
    160160    procedure Clear;
     161    procedure EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char);
    161162    function NeedVisit: Boolean;
    162163    property DateTime:      TFMDateTime read FDateTime  write SetDateTime;
    163164    property Inpatient:     Boolean     read FInpatient write SetInpatient;
    164165    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;
    167168    property Provider:      Int64       read FProvider  write SetProvider;
    168169    property ProviderName:  string      read GetProviderName;
     
    181182    FSignState: Integer;
    182183    FParentID : string;
     184    FUser     : Int64;
     185    FOrderDG  : String;
     186    FDCOrder  : boolean;
     187    FDelay    : boolean;
    183188    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);
    185190  public
    186191    property ItemType:  Integer read FItemType;
     
    190195    property SignState: Integer read FSignState write FSignState;
    191196    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;
    192201  end;
    193202
     
    208217    constructor Create;
    209218    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);
    211221    procedure Clear;
    212222    function CanSign: Boolean;
     
    367377  TempEncounterLoc: Integer; // used to Save Encounter Location when user selected "Review Sign Changes" from "File"
    368378  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;
    369384
    370385procedure NotifyOtherApps(const AppEvent, AppData: string);
     
    372387procedure TerminateOtherAppNotification;
    373388procedure GotoWebPage(const URL: WideString);
     389function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean;
     390
    374391
    375392implementation
     
    410427  SHORT_BROADCAST_TIMEOUT = 2000; // 2 seconds
    411428  MSG_TYPE: array[TMsgType] of String = ('V','D');
     429
     430function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean;
     431const
     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:  ';
     438var
     439  //AccessStatus: integer;
     440  AMsg, PrefixC, PrefixT: string;
     441begin
     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;
     470end;
    412471
    413472function QueuePending: boolean;
     
    740799end;
    741800
     801procedure TEncounter.EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char);
     802begin
     803 Encounter.Location := Loc;
     804 Encounter.LocationName := LocName;
     805 Encounter.LocationText := LocText;
     806 Encounter.VisitCategory := vCat;
     807 Encounter.DateTime := DT;;
     808end;
     809
    742810procedure TEncounter.Clear;
    743811{ clears all the fields of an Encounter (usually done upon patient selection }
     
    887955
    888956constructor 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);
    890958begin
    891959  FItemType  := AnItemType;
     
    895963  FSignState := ASignState;
    896964  FParentID  := AParentID;
     965  FUser      := User;
     966  FOrderDG   := OrderDG;
     967  FDCOrder   := DCOrder;
     968  FDelay     := Delay;
    897969end;
    898970
     
    921993
    922994procedure 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);
    924996var
    925997  i: Integer;
     
    9481020  if not Found then
    9491021  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);
    9511023    case ItemType of
    9521024    CH_DOC: begin
     
    12131285{ retrieves unsigned orders outside this session based on OR UNSIGNED ORDERS ON EXIT }
    12141286var
    1215   i, CanSign: Integer;
     1287  i, CanSign(*, OrderUser*): Integer;
     1288  OrderUser: int64;
    12161289  AnID: string;
    12171290  HaveOrders, OtherOrders: TStringList;
     
    12351308    for i := 0 to Pred(OtherOrders.Count) do
    12361309    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);
    12391314    end;
    12401315  finally
Note: See TracChangeset for help on using the changeset viewer.