Ignore:
Timestamp:
Aug 12, 2009, 7:34:51 PM (15 years ago)
Author:
Kevin Toppenberg
Message:

v1.1 Fixes Access/Verify code issues

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/branches/GUI-config/MainU.pas

    r493 r542  
    55   (c) 8/2008 Kevin Toppenberg
    66   Programmed by Kevin Toppenberg, Eddie Hagood 
    7    
     7
    88   Family Physicians of Greeneville, PC
    99   1410 Tusculum Blvd, Suite 2600
     
    3636  ipSkinManager,
    3737  {$ENDIF}
    38   Trpcb,
     38  Trpcb, //needed for .ptype types
    3939  ValEdit;
    4040
     
    201201    RPCBrokerParams : TTreeNode;
    202202    Devices : TTreeNode;
    203     FLastSelectedRow,FLastSelectedCol : integer;                 
     203    FLastSelectedRow,FLastSelectedCol : integer;
    204204    FLoadingGrid: boolean;
    205205    DataForGrid : TStringList;   // doesn't own TGridInfo objects
     
    208208    CachedWPField : TStringList;
    209209    FVisibleGridIdx : integer;
     210    FINIFileName : string;  // 8-12-09   elh
    210211    procedure ShowDebugClick(Sender: TObject);
    211212    function FindParam(Param : string) : string;
     
    282283
    283284uses
    284   frmSplash, {Trpcb,}  LookupU, SubfilesU, SetSelU, SelDateTimeU, PostU,
     285  frmSplash, LookupU, SubfilesU, SetSelU, SelDateTimeU, PostU,
    285286  FMErrorU, AboutU, PleaseWaitU, EditTextU, CreateTemplateU, SkinFormU,
    286   BatchAddU, DebugU;
     287  BatchAddU, DebugU,
     288  inifiles;  //8-12-09  elh
    287289
    288290{$R *.dfm}
     
    343345    if not ORNet.ConnectToServer(RPC_CONTEXT) then begin
    344346      DebugForm.Memo.Lines.Add('Failed connection.  Closing.');
     347      messagedlg('Login Failed.',mtError,[mbOK],0);
    345348      Close;
    346349      Exit;
     
    11671170        Inc(GridRow);
    11681171      end;
    1169     end; 
     1172    end;
    11701173    FLoadingGrid := false;
    11711174  end;
     
    11741177  procedure TMainForm.GridSelectCell(Sender: TObject; ACol, ARow: Integer;
    11751178                                     var CanSelect: Boolean);
    1176     (* 
     1179    (*
    11771180    For Field def, here is the legend
    11781181    character     meaning
    1179    
     1182
    11801183    BC            The data is Boolean Computed (true or false).
    11811184    C             The data is Computed.
     
    11871190    Pn            The data is a Pointer reference to file "n".
    11881191    S             The data is from a discrete Set of codes.
    1189    
    1190     N             The data is Numeric-valued.   
    1191    
     1192
     1193    N             The data is Numeric-valued.
     1194
    11921195    Jn            To specify a print length of n characters.
    11931196    Jn,d                To specify printing n characters with decimals.
    1194    
     1197
    11951198    V             The data is a Variable pointer.
    11961199    W             The data is Word processing.
    11971200    WL            The Word processing data is normally printed in Line mode (i.e., without word wrap).
    11981201      *)
    1199   var oneEntry,FieldDef : string;                                     
     1202  var oneEntry,FieldDef : string;
    12001203      date,time: string;
    12011204      FileNum,FieldNum,SubFileNum : string;
     
    12421245          IEN := RecordORComboBox.ItemID;  //get info from selected record
    12431246          if IEN > 0 then IENS := InttoStr(IEN) + ',';
    1244         end; 
     1247        end;
    12451248        if IENS <> '' then begin
    12461249          SubFileForm := TSubFileForm.Create(self);
     
    12501253        end else begin
    12511254          MessageDlg('IENS for File="".  Can''t process.',mtInformation,[MBOK],0);
    1252         end; 
     1255        end;
    12531256      end; 
    12541257    end else if Pos('C',FieldDef)>0 then begin  //computed fields.
     
    12681271        Grid.Cells[ACol,ARow] := date;
    12691272      end;
    1270       CanSelect := true;   
     1273      CanSelect := true;
    12711274    end else if Pos('S',FieldDef)>0 then begin  //Set of Codes
    12721275      SetSelForm.PrepForm(Piece(oneEntry,'^',7));
     
    12841287        Grid.Cells[ACol,ARow] := FieldLookupForm.ORComboBox.Text;
    12851288        CanSelect := true;
    1286       end;     
     1289      end;
    12871290    end;
    12881291    if CanSelect then begin
     
    12901293      FLastSelectedCol := ACol;
    12911294    end;
    1292     GridInfo.ApplyBtn.Enabled := true;   
    1293     GridInfo.RevertBtn.Enabled := true;   
    1294   end;
    1295 
    1296  
     1295    GridInfo.ApplyBtn.Enabled := true;
     1296    GridInfo.RevertBtn.Enabled := true;
     1297  end;
     1298
     1299
    12971300  function TMainForm.GetLineInfo(Grid : TStringGrid; CurrentUserData : TStringList; ARow: integer) : tFileEntry;
    12981301  var fieldNum : string;
     
    13021305  begin
    13031306    fieldNum := Grid.Cells[0,ARow];
    1304     gridRow := FindInStrings(fieldNum, CurrentUserData, fileNum);   
     1307    gridRow := FindInStrings(fieldNum, CurrentUserData, fileNum);
    13051308    if gridRow > -1 then begin
    13061309      oneEntry := CurrentUserData.Strings[gridRow];
     
    13101313      Result.IENS := Piece(oneEntry,'^',2);
    13111314      Result.oldValue := Piece(oneEntry,'^',4);
    1312       Result.newValue := Grid.Cells[2,ARow];     
     1315      Result.newValue := Grid.Cells[2,ARow];
    13131316    end else begin
    13141317      Result.Field := '';
     
    13471350      break;
    13481351    end;
    1349   end; 
    1350  
    1351  
     1352  end;
     1353
     1354
    13521355  function TMainForm.IsSubFile(FieldDef: string ; var SubFileNum : string) : boolean;
    13531356  //SubFileNum is OUT parameter
     
    14551458    FVisibleGridIdx := GetInfoIndexForGrid(Grid);
    14561459  end;
    1457  
    1458  
     1460
     1461
    14591462  procedure TMainForm.CompileChanges(Grid : TStringGrid; CurrentUserData,Changes : TStringList);
    14601463  //Output format:
     
    14641467      Entry : tFileEntry;
    14651468      oneEntry : string;
    1466   begin
     1469      iniFile : TIniFile; // 8-12-09   elh
     1470      UCaseOnly : boolean;
     1471  begin
     1472    FINIFileName := ExtractFilePath(ParamStr(0)) + 'GUI_Config.ini';
     1473    iniFile := TIniFile.Create(FINIFileName);            //8-12-09  elh
     1474    UCaseOnly := inifile.ReadBool('Settings','UCaseOnly',true);
     1475    iniFile.Free;
    14671476    for row := 1 to Grid.RowCount-1 do begin
    14681477      Entry := GetLineInfo(Grid,CurrentUserData, row);
    1469       if Entry.oldValue <> Entry.newValue then begin
    1470         if (Entry.newValue <> CLICK_FOR_SUBS) and
    1471           (Entry.newValue <> COMPUTED_FIELD) and
    1472           (Entry.newValue <> CLICK_TO_EDIT) then begin   
    1473           oneEntry := Entry.FileNum + '^' + Entry.IENS + '^' + Entry.Field + '^' + Entry.FieldName;
    1474           oneEntry := oneEntry + '^' + Entry.newValue + '^' + Entry.oldValue;
    1475           Changes.Add(oneEntry);
    1476         end; 
     1478      //Reject any value containing a "^"
     1479      //Do we need an @ here as well?
     1480      if (AnsiPos('^',Entry.newvalue) > 0){ or (AnsiPos('@',Entry.newvalue) > 0)} then begin
     1481         messagedlg('Invalid value entered for ' + Entry.Fieldname + #13 + #10
     1482                     + #13 + #10 + 'Invalid Entry:   ' + Entry.newvalue + #13 + #10 +
     1483                     'Ignoring Value.',mtError,[mbOK],0);
     1484      end else begin
     1485         if Entry.oldValue <> Entry.newValue then begin
     1486           if (Entry.newValue <> CLICK_FOR_SUBS) and
     1487              (Entry.newValue <> COMPUTED_FIELD) and
     1488              (Entry.newValue <> CLICK_TO_EDIT) then begin
     1489             oneEntry := Entry.FileNum + '^' + Entry.IENS + '^' + Entry.Field + '^' + Entry.FieldName;
     1490             //Test to see if change is an AV Code (2 or 11) or ES Code (20.4) in User File (200)
     1491             //If so, make it uppercase.       8/12/09   elh
     1492             if Entry.FileNum = '200' then begin
     1493                if ((Entry.Field = '2') and (UCaseOnly = true)) or
     1494                   ((Entry.Field = '11') and (UCaseOnly = true)) or
     1495                   ((Entry.Field = '20.4') and (UCaseOnly = true)) then begin
     1496                   messagedlg('Converting ' + Entry.Fieldname + ' to uppercase for VistA interactivity.' +#13 +#10 +
     1497                              #13 +#10 +
     1498                              'Old Value: ' + Entry.newvalue + '  ' + 'New Value: ' + Uppercase(Entry.newvalue),
     1499                              mtinformation,[mbOK],0);
     1500                   Entry.newValue := Uppercase(Entry.newValue);
     1501                end;
     1502             end;
     1503             oneEntry := oneEntry + '^' + Entry.newValue + '^' + Entry.oldValue;
     1504             Changes.Add(oneEntry);
     1505           end;
     1506         end;
    14771507      end;
    14781508    end;
    14791509  end;
    14801510
    1481  
     1511
    14821512  function TMainForm.PostChanges(Grid : TStringGrid) : TModalResult;
    14831513  //Results:  mrNone -- no post done (not needed)
     
    17051735    SrchStr := FileNum + '^' + FieldNum + '^' + HelpStyle;
    17061736    Idx := CachedHelpIdx.IndexOf(SrchStr);
    1707     if Idx = -1 then begin   
     1737    if Idx = -1 then begin
    17081738      RPCBrokerV.remoteprocedure := 'TMG CHANNEL';
    17091739      RPCBrokerV.param[0].ptype := list;
     
    17181748      end else begin
    17191749        RPCBrokerV.Results.Delete(0);
    1720         if RPCBrokerV.Results.Strings[RPCBrokerV.Results.Count-1]='' then begin
    1721           RPCBrokerV.Results.Delete(RPCBrokerV.Results.Count-1);
     1750        if RPCBrokerV.Results.Count > 0 then begin
     1751          if RPCBrokerV.Results.Strings[RPCBrokerV.Results.Count-1]='' then begin
     1752            RPCBrokerV.Results.Delete(RPCBrokerV.Results.Count-1);
     1753          end;
    17221754        end;
    1723         result := RPCBrokerV.Results.Text;       
     1755        result := RPCBrokerV.Results.Text;
     1756        if result = '' then result := ' ';
    17241757        //Maybe later replace text with "Enter F1 for more help."
    1725         Result := AnsiReplaceText(Result,'Enter ''??'' for more help.','');       
     1758        Result := AnsiReplaceText(Result,'Enter ''??'' for more help.','');
    17261759        while Result[Length(Result)] in [#10,#13] do begin
    17271760          Result := AnsiLeftStr(Result,Length(Result)-1);
     
    21262159        SetPiece(oneEntry,'^',2,IENS);
    21272160        Data.Add(oneEntry);
    2128       end;   
     2161      end;
    21292162    end; 
    21302163  end;
    2131  
    2132  
     2164
     2165
    21332166  procedure TMainForm.ApplicationEventsException(Sender: TObject; E: Exception);
    21342167  begin
     
    21782211  end;
    21792212
     2213
     2214
    21802215end.
    21812216
Note: See TracChangeset for help on using the changeset viewer.