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