| 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; | 
|---|
| 64 | //RPCBrokerV.Call; | 
|---|
| 65 | CallBroker; | 
|---|
| 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; | 
|---|
| 106 | //RPCBrokerV.Call; | 
|---|
| 107 | CallBroker; | 
|---|
| 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 |  | 
|---|