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