| 1 | unit rECS;
 | 
|---|
| 2 | 
 | 
|---|
| 3 | interface
 | 
|---|
| 4 | 
 | 
|---|
| 5 | uses SysUtils, Windows, Classes, Forms, ORFn, rCore, uConst, ORClasses, ORNet, uCore;
 | 
|---|
| 6 | 
 | 
|---|
| 7 | type
 | 
|---|
| 8 |   TECSReport = Class(TObject)
 | 
|---|
| 9 |   private
 | 
|---|
| 10 |     FReportHandle: string;            // PCE report or Patient Summary report
 | 
|---|
| 11 |     FReportType  : string;            // D: display  P: print
 | 
|---|
| 12 |     FPrintDEV    : string;            // if Print, the print device IEN
 | 
|---|
| 13 |     FReportStart : string;            // Start Date
 | 
|---|
| 14 |     FReportEnd   : string;            // End Date
 | 
|---|
| 15 |     FNeedReason  : string;           // Need procedure reason ?
 | 
|---|
| 16 |     FECSPermit   : boolean;           // Authorized use of ECS
 | 
|---|
| 17 |   public
 | 
|---|
| 18 |     constructor Create;
 | 
|---|
| 19 |     property ReportHandle: string       read FReportHandle  write FReportHandle;
 | 
|---|
| 20 |     property ReportType  : string       read FReportType    write FReportType;
 | 
|---|
| 21 |     property ReportStart : string       read FReportStart   write FReportStart;
 | 
|---|
| 22 |     property ReportEnd   : string       read FReportEnd     write FReportEnd;
 | 
|---|
| 23 |     property PrintDEV    : string       read FPrintDEV      write FPrintDEV;
 | 
|---|
| 24 |     property NeedReason  : string       read FNeedReason    write FNeedReason;
 | 
|---|
| 25 |     property ECSPermit   : boolean      read FECSPermit     write FECSPermit;
 | 
|---|
| 26 |   end;
 | 
|---|
| 27 | 
 | 
|---|
| 28 | function GetVisitID: string;
 | 
|---|
| 29 | function GetDivisionID: string;
 | 
|---|
| 30 | function IsESSOInstalled: boolean;
 | 
|---|
| 31 | procedure SaveUserPath(APathInfo: string; var CurPath: string);
 | 
|---|
| 32 | procedure FormatECSDate(ADTStr: string; var AnECSRpt: TECSReport);
 | 
|---|
| 33 | procedure LoadECSReportText(Dest: TStrings; AnECSRpt: TECSReport);
 | 
|---|
| 34 | procedure PrintECSReportToDevice(AnECSRpt: TECSReport);
 | 
|---|
| 35 | 
 | 
|---|
| 36 | implementation
 | 
|---|
| 37 | uses TRPCB;
 | 
|---|
| 38 | 
 | 
|---|
| 39 | constructor TECSReport.Create;
 | 
|---|
| 40 | begin
 | 
|---|
| 41 |   ReportHandle := '';
 | 
|---|
| 42 |   ReportType   := '';
 | 
|---|
| 43 |   ReportStart  := '';
 | 
|---|
| 44 |   ReportEnd    := '';
 | 
|---|
| 45 |   PrintDEV     := '';
 | 
|---|
| 46 |   FNeedReason  := '';
 | 
|---|
| 47 |   ECSPermit    := False;
 | 
|---|
| 48 | end;
 | 
|---|
| 49 | 
 | 
|---|
| 50 | function IsESSOInstalled: boolean;
 | 
|---|
| 51 | var
 | 
|---|
| 52 |   rtn: integer;
 | 
|---|
| 53 | begin
 | 
|---|
| 54 |   Result := False;
 | 
|---|
| 55 |   rtn := StrToIntDef(SCallV('ORECS01 CHKESSO',[nil]),0);
 | 
|---|
| 56 |   if rtn > 0 then
 | 
|---|
| 57 |     Result := True;
 | 
|---|
| 58 | end;
 | 
|---|
| 59 | 
 | 
|---|
| 60 | function GetVisitID: string;
 | 
|---|
| 61 | var
 | 
|---|
| 62 |   vsitStr: string;
 | 
|---|
| 63 | begin
 | 
|---|
| 64 |   vsitStr := Encounter.VisitStr + ';' + Patient.DFN;
 | 
|---|
| 65 |   Result := SCallV('ORECS01 VSITID',[vsitStr]);
 | 
|---|
| 66 | end;
 | 
|---|
| 67 | 
 | 
|---|
| 68 | function GetDivisionID: string;
 | 
|---|
| 69 | var
 | 
|---|
| 70 |   divID: string;
 | 
|---|
| 71 | begin
 | 
|---|
| 72 |   divID := SCallV('ORECS01 GETDIV',[nil]);
 | 
|---|
| 73 |   Result := divID;
 | 
|---|
| 74 | end;
 | 
|---|
| 75 | 
 | 
|---|
| 76 | procedure SaveUserPath(APathInfo: string; var CurPath: string);
 | 
|---|
| 77 | begin
 | 
|---|
| 78 |   CurPath := SCallV('ORECS01 SAVPATH',[APathInfo]);
 | 
|---|
| 79 | end;
 | 
|---|
| 80 | 
 | 
|---|
| 81 | procedure FormatECSDate(ADTStr: string; var AnECSRpt: TECSReport);
 | 
|---|
| 82 | var
 | 
|---|
| 83 |   x,DaysBack :string;
 | 
|---|
| 84 |   Alpha, Omega: double;
 | 
|---|
| 85 | begin
 | 
|---|
| 86 |   Alpha := 0;
 | 
|---|
| 87 |   Omega := 0;
 | 
|---|
| 88 |   if CharAt(ADTStr, 1) = 'T' then
 | 
|---|
| 89 |   begin
 | 
|---|
| 90 |     Alpha := StrToFMDateTime(Piece(ADTStr,';',1));
 | 
|---|
| 91 |     Omega := StrToFMDateTime(Piece(ADTStr,';',2));
 | 
|---|
| 92 |   end;
 | 
|---|
| 93 |   if CharAt(ADTStr, 1) = 'd' then
 | 
|---|
| 94 |   begin
 | 
|---|
| 95 |     x := Piece(ADTStr,';',1);
 | 
|---|
| 96 |     DaysBack := Copy(x, 2, Length(x));
 | 
|---|
| 97 |     Alpha := StrToFMDateTime('T-' + DaysBack);
 | 
|---|
| 98 |     Omega := StrToFMDateTime('T');
 | 
|---|
| 99 |   end;
 | 
|---|
| 100 |   AnECSRpt.ReportStart := FloatToStr(Alpha);
 | 
|---|
| 101 |   AnECSRpt.ReportEnd   := FloatToStr(Omega);
 | 
|---|
| 102 | end;
 | 
|---|
| 103 | 
 | 
|---|
| 104 | procedure LoadECSReportText(Dest: TStrings; AnECSRpt: TECSReport);
 | 
|---|
| 105 | var
 | 
|---|
| 106 |   userid: string;
 | 
|---|
| 107 | begin
 | 
|---|
| 108 |   with RPCBrokerv do
 | 
|---|
| 109 |   begin
 | 
|---|
| 110 |     ClearParameters := True;
 | 
|---|
| 111 |     RemoteProcedure := 'ORECS01 ECRPT';
 | 
|---|
| 112 |     Param[0].PType  := list;
 | 
|---|
| 113 |     Param[0].Mult['"ECHNDL"'] := AnECSRpt.ReportHandle;
 | 
|---|
| 114 |     Param[0].Mult['"ECPTYP"'] := AnECSRpt.ReportType;
 | 
|---|
| 115 |     Param[0].Mult['"ECDEV"']  := AnECSRpt.PrintDEV;
 | 
|---|
| 116 |     Param[0].Mult['"ECDFN"']  := Patient.DFN;
 | 
|---|
| 117 |     Param[0].Mult['"ECSD"']   := AnECSRpt.ReportStart;
 | 
|---|
| 118 |     Param[0].Mult['"ECED"']   := AnECSRpt.ReportEnd;
 | 
|---|
| 119 |     Param[0].Mult['"ECRY"']   := AnECSRpt.NeedReason;
 | 
|---|
| 120 |     Param[0].Mult['"ECDUZ"']  := userid;
 | 
|---|
| 121 |     CallBroker;
 | 
|---|
| 122 |   end;
 | 
|---|
| 123 |   QuickCopy(RPCBrokerV.Results,Dest);
 | 
|---|
| 124 | end;
 | 
|---|
| 125 | 
 | 
|---|
| 126 | procedure PrintECSReportToDevice(AnECSRpt: TECSReport);
 | 
|---|
| 127 | var
 | 
|---|
| 128 |   userid: string;
 | 
|---|
| 129 | begin
 | 
|---|
| 130 |   userid := IntToStr(User.DUZ);
 | 
|---|
| 131 |   with RPCBrokerV do
 | 
|---|
| 132 |   begin
 | 
|---|
| 133 |     clearParameters := True;
 | 
|---|
| 134 |     RemoteProcedure := 'ORECS01 ECPRINT';
 | 
|---|
| 135 |     Param[0].PType := List;
 | 
|---|
| 136 |     Param[0].Mult['"ECHNDL"'] := AnECSRpt.ReportHandle;
 | 
|---|
| 137 |     Param[0].Mult['"ECPTYP"'] := AnECSRpt.ReportType;
 | 
|---|
| 138 |     Param[0].Mult['"ECDEV"']  := AnECSRpt.PrintDEV;
 | 
|---|
| 139 |     Param[0].Mult['"ECDFN"']  := Patient.DFN;
 | 
|---|
| 140 |     Param[0].Mult['"ECSD"']   := AnECSRpt.ReportStart;
 | 
|---|
| 141 |     Param[0].Mult['"ECED"']   := AnECSRpt.ReportEnd;
 | 
|---|
| 142 |     Param[0].Mult['"ECRY"']   := AnECSRpt.NeedReason;
 | 
|---|
| 143 |     Param[0].Mult['"ECDUZ"']  := userid;
 | 
|---|
| 144 |     CallBroker;
 | 
|---|
| 145 |   end;
 | 
|---|
| 146 | end;
 | 
|---|
| 147 | 
 | 
|---|
| 148 | end.
 | 
|---|