| 1 | RORRP011 ;HCIOFO/SG - RPC: TASK MANAGER (REPORTS) ; 11/21/05 1:02pm | 
|---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ;***** ADDS A LINE TO THE RESULTS ARRAY | 
|---|
| 7 | ADD(STR) ; | 
|---|
| 8 | S RESULTS(0)=$G(RESULTS(0))+1,RESULTS(RESULTS(0))=STR | 
|---|
| 9 | Q | 
|---|
| 10 | ; | 
|---|
| 11 | ;***** THE REPORT RETRIEVER | 
|---|
| 12 | ; RPC: [ROR REPORT RETRIEVE] | 
|---|
| 13 | ; | 
|---|
| 14 | ; .RORESULT     Reference to a local variable where the report | 
|---|
| 15 | ;               lines are returned to. | 
|---|
| 16 | ; | 
|---|
| 17 | ; TASK          Task number | 
|---|
| 18 | ; | 
|---|
| 19 | ; [FROM]        Where to start/continue the rendering process | 
|---|
| 20 | ;               (see the $$XMLREP^RORTSK10 function for details). | 
|---|
| 21 | ;               By default (if $G(FROM)'>0), the rendering starts | 
|---|
| 22 | ;               from the beginning of the report. | 
|---|
| 23 | ; | 
|---|
| 24 | ; [MAXSIZE]     Either the maximum number of lines to retrieve or | 
|---|
| 25 | ;               the maximum size of the output in bytes (append the | 
|---|
| 26 | ;               "B" to the number). By default (if $G(MAXSIZE)'>0,) | 
|---|
| 27 | ;               the whole report (starting from the point indicated | 
|---|
| 28 | ;               by the FROM parameter if it is defined) is retrieved. | 
|---|
| 29 | ; | 
|---|
| 30 | ; [.SORT]       Sort modes for the report | 
|---|
| 31 | ; | 
|---|
| 32 | ; See the description of the ROR REPORT RETRIEVE remote procedure | 
|---|
| 33 | ; for more details. | 
|---|
| 34 | ; | 
|---|
| 35 | ; Return Values: | 
|---|
| 36 | ; | 
|---|
| 37 | ; A negative value of the first "^"-piece of the RESULTS(0) node | 
|---|
| 38 | ; indicates an error (see the RPCSTK^RORERR procedure for details). | 
|---|
| 39 | ; | 
|---|
| 40 | GETXML(RORESULT,TASK,FROM,MAXSIZE,SORT) ; | 
|---|
| 41 | N DST,RC,RORERRDL,TMP  K RORESULT | 
|---|
| 42 | D CLEAR^RORERR("GETXML^RORRP039",1) | 
|---|
| 43 | ;--- Change the type of the result from the ARRAY to | 
|---|
| 44 | ;--- the GLOBAL ARRAY if a long report is suspected. | 
|---|
| 45 | S DST="RORESULT",MAXSIZE=$G(MAXSIZE) | 
|---|
| 46 | S TMP=$S(MAXSIZE["B":+MAXSIZE,1:MAXSIZE*80) | 
|---|
| 47 | I 'TMP!(TMP>16384),$$RTRNFMT^XWBLIB(4,1)  D | 
|---|
| 48 | . S (DST,RORESULT)=$$ALLOC^RORTMP() | 
|---|
| 49 | ;--- Render the report into XML | 
|---|
| 50 | S RC=$$XMLREP^RORTSK10(DST,TASK,.SORT,.FROM,MAXSIZE) | 
|---|
| 51 | I RC<0  K @DST  D RPCSTK^RORERR(.RORESULT,RC)  Q | 
|---|
| 52 | ;--- Return the starting point for the next call | 
|---|
| 53 | S:MAXSIZE>0 @DST@(0)=$G(FROM) | 
|---|
| 54 | Q | 
|---|
| 55 | ; | 
|---|
| 56 | ;***** RETURNS THE REPORT STYLESHEET | 
|---|
| 57 | ; RPC: [ROR REPORT STYLESHEET] | 
|---|
| 58 | ; | 
|---|
| 59 | ; .RESULTS      Reference to a local variable where the XSL | 
|---|
| 60 | ;               stylesheet lines are returned to. | 
|---|
| 61 | ; | 
|---|
| 62 | ; RPTCODE       Code of the report | 
|---|
| 63 | ; | 
|---|
| 64 | ; [TYPE]        Type of the stylesheet | 
|---|
| 65 | ;                 1  Report preview (default) | 
|---|
| 66 | ;                 2  Comma-separated output | 
|---|
| 67 | ;                 3  Printer output | 
|---|
| 68 | ; | 
|---|
| 69 | ; Return Values: | 
|---|
| 70 | ; | 
|---|
| 71 | ; A negative value of the first "^"-piece of the @RESULTS@(0) node | 
|---|
| 72 | ; indicates an error (see the RPCSTK^RORERR procedure for details). | 
|---|
| 73 | ; | 
|---|
| 74 | GETXSL(RESULTS,RPTCODE,TYPE) ; | 
|---|
| 75 | N DLG,RC,RORERRDL | 
|---|
| 76 | D CLEAR^RORERR("GETXSL^RORRP039",1) | 
|---|
| 77 | K RESULTS  S RESULTS=$$ALLOC^RORTMP() | 
|---|
| 78 | ;--- Check the parameters | 
|---|
| 79 | S DLG=7981000,TYPE=$S($G(TYPE)>0:TYPE/1000,1:.001) | 
|---|
| 80 | I $G(RPTCODE)>0  S:RPTCODE'>999 DLG=DLG+RPTCODE+TYPE | 
|---|
| 81 | ;--- Load the stylesheet into the buffer | 
|---|
| 82 | D BLD^DIALOG(DLG,,,RESULTS) | 
|---|
| 83 | D:$D(@RESULTS)<10 | 
|---|
| 84 | . D BLD^DIALOG(7981000+TYPE,,,RESULTS) | 
|---|
| 85 | . D:$D(@RESULTS)<10 BLD^DIALOG(7981000,,,RESULTS) | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | ;***** RETURNS A LIST OF AVAILABLE REPORTS AND THEIR PARAMETERS | 
|---|
| 89 | ; ROR: [ROR REPORTS AVAILABLE] | 
|---|
| 90 | ; | 
|---|
| 91 | ; .RESULTS      Reference to a local variable where the results | 
|---|
| 92 | ;               are returned to. | 
|---|
| 93 | ; | 
|---|
| 94 | ; REGIEN        Registry IEN | 
|---|
| 95 | ; | 
|---|
| 96 | ; Return Values: | 
|---|
| 97 | ; | 
|---|
| 98 | ; A negative value of the first "^"-piece of the RESULTS(0) indicates | 
|---|
| 99 | ; an error (see the RPCSTK^RORERR procedure for more details). | 
|---|
| 100 | ; | 
|---|
| 101 | ; Otherwise, the report descriptors are returned in the RESULTS array | 
|---|
| 102 | ; (see the $$RPINFO^RORUTL08 entry point for details). | 
|---|
| 103 | ; | 
|---|
| 104 | ; RESULTS(0)            Number of available reports | 
|---|
| 105 | ; | 
|---|
| 106 | ; RESULTS(i)            XML document that describes the reports | 
|---|
| 107 | ; | 
|---|
| 108 | RPAVAIL(RESULTS,REGIEN) ; | 
|---|
| 109 | N BUF,CODE,INFO,NAME,NREP,RC,RPLST | 
|---|
| 110 | D CLEAR^RORERR("RPAVAIL^RORRP039",1) | 
|---|
| 111 | ;--- The the list of available reports | 
|---|
| 112 | S RC=$$RPLIST^RORUTL08(.RPLST,REGIEN) | 
|---|
| 113 | I RC<0  D RPCSTK^RORERR(.RESULTS,RC)  Q | 
|---|
| 114 | ;--- Sort the reports alphabetically | 
|---|
| 115 | S CODE=0 | 
|---|
| 116 | F  S CODE=$O(RPLST(CODE))  Q:CODE'>0  D | 
|---|
| 117 | . S NAME=$P(RPLST(CODE),U,2) | 
|---|
| 118 | . S:NAME'="" RPLST("B",NAME,CODE)="" | 
|---|
| 119 | ;--- | 
|---|
| 120 | K RESULTS | 
|---|
| 121 | D ADD($$XMLHDR^MXMLUTL()) | 
|---|
| 122 | D ADD("<REPORTS>") | 
|---|
| 123 | ;--- Get the parameters of the reports | 
|---|
| 124 | S NAME="",(NREP,RC)=0 | 
|---|
| 125 | F  S NAME=$O(RPLST("B",NAME))  Q:NAME=""  D  Q:RC<0 | 
|---|
| 126 | . S CODE=0 | 
|---|
| 127 | . F  S CODE=$O(RPLST("B",NAME,CODE))  Q:CODE'>0  D  Q:RC<0 | 
|---|
| 128 | . . S RC=$$RPINFO^RORUTL08(CODE,.INFO,"E")  Q:RC<0 | 
|---|
| 129 | . . S NREP=NREP+1 | 
|---|
| 130 | . . S BUF="REPORT CODE="""_CODE_""" NAME="""_INFO(1)_"""" | 
|---|
| 131 | . . S BUF=BUF_" IEN="""_INFO(5)_"""" | 
|---|
| 132 | . . S:'INFO(2) BUF=BUF_" FGP=""1""" | 
|---|
| 133 | . . S:'INFO(7) BUF=BUF_" LOCAL=""1""" | 
|---|
| 134 | . . S:INFO(12) BUF=BUF_" SHARED_TEMPLATES=""1""" | 
|---|
| 135 | . . D ADD("<"_BUF_">") | 
|---|
| 136 | . . D:INFO(6)>0 ADD("<INADT>"_(+INFO(6))_"</INADT>") | 
|---|
| 137 | . . D ADD("<PANELS>"_INFO(8)_"</PANELS>") | 
|---|
| 138 | . . D:INFO(10)?." "1"<PARAMS>"1.E ADD(INFO(10)) | 
|---|
| 139 | . . D:INFO(11)?." "1"<SORT_MODES>"1.E ADD(INFO(11)) | 
|---|
| 140 | . . D ADD("</REPORT>") | 
|---|
| 141 | ;--- | 
|---|
| 142 | I RC'<0  D ADD("</REPORTS>")  S RESULTS(0)=NREP | 
|---|
| 143 | E  D RPCSTK^RORERR(.RESULTS,RC) | 
|---|
| 144 | Q | 
|---|