| [459] | 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.
 | 
|---|