| [800] | 1 | unit frmSearchResults; | 
|---|
|  | 2 |  | 
|---|
|  | 3 | interface | 
|---|
|  | 4 |  | 
|---|
|  | 5 | uses | 
|---|
|  | 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | 
|---|
|  | 7 | Dialogs, ORCtrls, StdCtrls, ORNet, ORFn, ComCtrls, Trpcb, Buttons, | 
|---|
|  | 8 | ExtCtrls; | 
|---|
|  | 9 |  | 
|---|
|  | 10 | type | 
|---|
|  | 11 | TfrmSrchResults = class(TForm) | 
|---|
|  | 12 | cboResultList: TORComboBox; | 
|---|
|  | 13 | lblCaption: TLabel; | 
|---|
|  | 14 | btnSelectRecord: TBitBtn; | 
|---|
|  | 15 | btnCancel: TBitBtn; | 
|---|
|  | 16 | pnlDetails: TPanel; | 
|---|
|  | 17 | Memo: TMemo; | 
|---|
|  | 18 | procedure cboResultListNeedData(Sender: TObject; | 
|---|
|  | 19 | const StartFrom: String; Direction, InsertAt: Integer); | 
|---|
|  | 20 | procedure cboResultListChange(Sender: TObject); | 
|---|
|  | 21 | procedure btnSelectRecordClick(Sender: TObject); | 
|---|
|  | 22 | private | 
|---|
|  | 23 | { Private declarations } | 
|---|
|  | 24 | FJobNum : string; | 
|---|
|  | 25 | FTargetFName : string; | 
|---|
|  | 26 | FLastDFN : string; | 
|---|
|  | 27 | function SubSetOfResults(JobNum: string; const StartFrom: string; Direction: Integer): TStrings; | 
|---|
|  | 28 | procedure ShowDemog(ItemID: string); | 
|---|
|  | 29 | procedure ClearDemog; | 
|---|
|  | 30 | procedure InitORComboBox(ORComboBox: TORComboBox; initValue : string; boxtype : string); | 
|---|
|  | 31 | public | 
|---|
|  | 32 | { Public declarations } | 
|---|
|  | 33 | SelectedIEN : string;   //used only as OUT parameters | 
|---|
|  | 34 | SelectedName : string; //used only as OUT parameters | 
|---|
|  | 35 | function PrepForm(JobNum, TargetFName, NumMatches, Fields: string) : Boolean; | 
|---|
|  | 36 | end; | 
|---|
|  | 37 |  | 
|---|
|  | 38 | var | 
|---|
|  | 39 | frmSrchResults: TfrmSrchResults; | 
|---|
|  | 40 |  | 
|---|
|  | 41 | implementation | 
|---|
|  | 42 |  | 
|---|
|  | 43 | {$R *.dfm} | 
|---|
|  | 44 |  | 
|---|
|  | 45 | uses rcore; | 
|---|
|  | 46 |  | 
|---|
|  | 47 | function TfrmSrchResults.PrepForm(JobNum, TargetFName, NumMatches, Fields: string) : Boolean; | 
|---|
|  | 48 | //Returns TRUE if OK, and FALSE if error | 
|---|
|  | 49 | var | 
|---|
|  | 50 | cmd,RPCResult : string; | 
|---|
|  | 51 | begin | 
|---|
|  | 52 | FJobNum := JobNum; | 
|---|
|  | 53 | FTargetFName := TargetFName; | 
|---|
|  | 54 | lblCaption.Caption := 'Select Desired Record from File '+ TargetFName + '   ' | 
|---|
|  | 55 | + NumMatches + ' found.'; | 
|---|
|  | 56 |  | 
|---|
|  | 57 | Result := TRUE; //default | 
|---|
|  | 58 | RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL'; | 
|---|
|  | 59 | RPCBrokerV.Param[0].Value := '.X';  // not used | 
|---|
|  | 60 | RPCBrokerV.param[0].ptype := list; | 
|---|
|  | 61 | cmd := 'PREP SUBSET'; | 
|---|
|  | 62 | cmd := cmd + '^' + JobNum + '^' + Fields; | 
|---|
|  | 63 | RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; | 
|---|
| [801] | 64 | //RPCBrokerV.Call; | 
|---|
|  | 65 | CallBroker; | 
|---|
| [800] | 66 | if RPCBrokerV.Results.Count > 0 then begin | 
|---|
|  | 67 | RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1 | 
|---|
|  | 68 | if piece(RPCResult,'^',1)='-1' then begin | 
|---|
|  | 69 | MessageDlg(piece(RPCResult,'^',2),mtInformation,[mbOK],0); | 
|---|
|  | 70 | Result := false; | 
|---|
|  | 71 | end; | 
|---|
|  | 72 | end; | 
|---|
|  | 73 | if Result=false then exit; | 
|---|
|  | 74 | InitORComboBox(cboResultList,'A','record'); | 
|---|
|  | 75 | end; | 
|---|
|  | 76 |  | 
|---|
|  | 77 | procedure TfrmSrchResults.InitORComboBox(ORComboBox: TORComboBox; initValue : string; boxtype : string); | 
|---|
|  | 78 | begin | 
|---|
|  | 79 | ORComboBox.Items.Clear; | 
|---|
|  | 80 | ORComboBox.Text := '';  //initValue; | 
|---|
|  | 81 | ORComboBox.InitLongList(initValue); | 
|---|
|  | 82 | if ORComboBox.Items.Count > 0 then begin | 
|---|
|  | 83 | ORComboBox.Text := Piece(ORComboBox.Items[0],'^',2); | 
|---|
|  | 84 | end else begin | 
|---|
|  | 85 | ORComboBox.Text := '<Begin by selecting ' + boxtype + '>'; | 
|---|
|  | 86 | end; | 
|---|
|  | 87 | end; | 
|---|
|  | 88 |  | 
|---|
|  | 89 |  | 
|---|
|  | 90 | function TfrmSrchResults.SubSetOfResults(JobNum: string; | 
|---|
|  | 91 | const StartFrom: string; | 
|---|
|  | 92 | Direction: Integer       ): TStrings; | 
|---|
|  | 93 |  | 
|---|
|  | 94 | { returns a pointer to a list of file entries (for use in a long list box) - | 
|---|
|  | 95 | The return value is a pointer to RPCBrokerV.Results, so the data must | 
|---|
|  | 96 | be used BEFORE the next broker call! } | 
|---|
|  | 97 | var | 
|---|
|  | 98 | cmd,RPCResult : string; | 
|---|
|  | 99 | begin | 
|---|
|  | 100 | RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL'; | 
|---|
|  | 101 | RPCBrokerV.Param[0].Value := '.X';  // not used | 
|---|
|  | 102 | RPCBrokerV.param[0].ptype := list; | 
|---|
|  | 103 | cmd := 'RESULTS LIST SUBSET'; | 
|---|
|  | 104 | cmd := cmd + '^' + JobNum + '^' + StartFrom + '^' + IntToStr(Direction); | 
|---|
|  | 105 | RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; | 
|---|
| [801] | 106 | //RPCBrokerV.Call; | 
|---|
|  | 107 | CallBroker; | 
|---|
| [800] | 108 | if RPCBrokerV.Results.Count > 0 then begin | 
|---|
|  | 109 | RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1 | 
|---|
|  | 110 | if piece(RPCResult,'^',1)='-1' then begin | 
|---|
|  | 111 | // handle error... | 
|---|
|  | 112 | end else begin | 
|---|
|  | 113 | RPCBrokerV.Results.Delete(0); | 
|---|
|  | 114 | if RPCBrokerV.Results.Count=0 then begin | 
|---|
|  | 115 | //RPCBrokerV.Results.Add('0^<NO DATA>'); | 
|---|
|  | 116 | end; | 
|---|
|  | 117 | end; | 
|---|
|  | 118 | end; | 
|---|
|  | 119 | Result := RPCBrokerV.Results; | 
|---|
|  | 120 | end; | 
|---|
|  | 121 |  | 
|---|
|  | 122 | procedure TfrmSrchResults.cboResultListNeedData(Sender: TObject; | 
|---|
|  | 123 | const StartFrom: String; Direction, InsertAt: Integer); | 
|---|
|  | 124 | var  Result : TStrings; | 
|---|
|  | 125 | ORComboBox : TORComboBox; | 
|---|
|  | 126 | begin | 
|---|
|  | 127 | ORComboBox := TORComboBox(Sender); | 
|---|
|  | 128 | Result := SubSetOfResults(FJobNum, StartFrom, Direction); | 
|---|
|  | 129 | ORComboBox.ForDataUse(Result); | 
|---|
|  | 130 | end; | 
|---|
|  | 131 |  | 
|---|
|  | 132 |  | 
|---|
|  | 133 | procedure TfrmSrchResults.cboResultListChange(Sender: TObject); | 
|---|
|  | 134 | var SelEntry : string; | 
|---|
|  | 135 | begin | 
|---|
|  | 136 | if cboResultList.ItemIndex >=0 then begin | 
|---|
|  | 137 | SelEntry := cboResultList.Items[cboResultList.ItemIndex]; | 
|---|
|  | 138 | SelectedIEN := piece(SelEntry,'^',1); | 
|---|
|  | 139 | SelectedName := piece(SelEntry,'^',2); | 
|---|
|  | 140 | end else begin | 
|---|
|  | 141 | SelectedIEN := ''; | 
|---|
|  | 142 | SelectedName := '' | 
|---|
|  | 143 | end; | 
|---|
|  | 144 | if FTargetFName = 'PATIENT' then begin | 
|---|
|  | 145 | ShowDemog(SelectedIEN); | 
|---|
|  | 146 | end else begin | 
|---|
|  | 147 | Memo.Clear; | 
|---|
|  | 148 | end; | 
|---|
|  | 149 | end; | 
|---|
|  | 150 |  | 
|---|
|  | 151 | procedure TfrmSrchResults.btnSelectRecordClick(Sender: TObject); | 
|---|
|  | 152 | begin | 
|---|
|  | 153 | //Check that something is selected, etc. | 
|---|
|  | 154 | if SelectedName = '' then begin | 
|---|
|  | 155 | MessageDlg('Please Select a Record First.',mtInformation,[mbOK],0); | 
|---|
|  | 156 | end else begin | 
|---|
|  | 157 | ModalResult := mrOK; | 
|---|
|  | 158 | //Self.Close; | 
|---|
|  | 159 | end; | 
|---|
|  | 160 | end; | 
|---|
|  | 161 |  | 
|---|
|  | 162 |  | 
|---|
|  | 163 | procedure TfrmSrchResults.ShowDemog(ItemID: string); | 
|---|
|  | 164 | { gets a record of patient indentifying information from the server and displays it } | 
|---|
|  | 165 | var   PtRec: TPtIDInfo; | 
|---|
|  | 166 | begin | 
|---|
|  | 167 | if ItemID = '' then begin | 
|---|
|  | 168 | ClearDemog; | 
|---|
|  | 169 | Exit; | 
|---|
|  | 170 | end; | 
|---|
|  | 171 | if ItemID = FLastDFN then Exit; | 
|---|
|  | 172 | Memo.Clear; | 
|---|
|  | 173 | FLastDFN := ItemID; | 
|---|
|  | 174 | //Memo.Lines.Add('After integration into CPRS, Fix ShowDemog().') | 
|---|
|  | 175 | PtRec := rCore.GetPtIDInfo(ItemID); | 
|---|
|  | 176 | with PtRec do begin | 
|---|
|  | 177 | Memo.Lines.Add(Name); | 
|---|
|  | 178 | Memo.Lines.Add('SSN: ' + SSN + '.'); | 
|---|
|  | 179 | Memo.Lines.Add('DOB:' + DOB + '.'); | 
|---|
|  | 180 | if Sex <> '' then Memo.Lines.Add(Sex + '.'); | 
|---|
|  | 181 | if Location <> '' then | 
|---|
|  | 182 | Memo.Lines.Add('Location: ' + Location + '.'); | 
|---|
|  | 183 | if RoomBed <> '' then | 
|---|
|  | 184 | Memo.Lines.Add('Room: ' + RoomBed + '.'); | 
|---|
|  | 185 | if HRN <> '' then Memo.Lines.Add('HRN: ' + HRN + '.'); | 
|---|
|  | 186 | end; | 
|---|
|  | 187 | end; | 
|---|
|  | 188 |  | 
|---|
|  | 189 | procedure TfrmSrchResults.ClearDemog; | 
|---|
|  | 190 | begin | 
|---|
|  | 191 | Memo.Lines.Clear; | 
|---|
|  | 192 | FLastDFN := ''; | 
|---|
|  | 193 |  | 
|---|
|  | 194 | end; | 
|---|
|  | 195 |  | 
|---|
|  | 196 | end. | 
|---|
|  | 197 |  | 
|---|