| [613] | 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 | 
|---|