| [613] | 1 | RORXU006 ;HCIOFO/SG - REPORT PARAMETERS ; 6/21/06 1:41pm | 
|---|
|  | 2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ; This routine uses the following IAs: | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ; #91           Read access to the file #60 (controlled) | 
|---|
|  | 7 | ; #2438         The .01 field of file #40.8 (controlled) | 
|---|
|  | 8 | ; #2947         ATESTS^ORWLRR (controlled) | 
|---|
|  | 9 | ; #10035        Direct read of DOD field of file #2 (supported) | 
|---|
|  | 10 | ; #10040        Read access to HOSPITAL LOCATION file (suppotted) | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | Q | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ;***** PROCESSES THE LIST OF CLINICS | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | ; .RORTSK       Task number and task parameters | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | ; PARTAG        Reference (IEN) to the parent tag | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; Return Values: | 
|---|
|  | 21 | ;       <0  Error code | 
|---|
|  | 22 | ;       >0  IEN of the CLINICS element | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | CLINLST(RORTSK,PARTAG) ; | 
|---|
|  | 25 | N IEN,LTAG,RORMSG,TMP | 
|---|
|  | 26 | I $D(RORTSK("PARAMS","CLINICS","C"))>1  D | 
|---|
|  | 27 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"CLINICS",,PARTAG)  Q:LTAG'>0 | 
|---|
|  | 28 | . S IEN=0 | 
|---|
|  | 29 | . F  S IEN=$O(RORTSK("PARAMS","CLINICS","C",IEN))  Q:IEN'>0  D | 
|---|
|  | 30 | . . S TMP=$$GET1^DIQ(44,IEN_",",.01,,,"RORMSG") | 
|---|
|  | 31 | . . D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,44,IEN_",") | 
|---|
|  | 32 | . . Q:TMP="" | 
|---|
|  | 33 | . . D ADDVAL^RORTSK11(RORTSK,"CLINIC",TMP,LTAG,,IEN) | 
|---|
|  | 34 | E  D:$$PARAM^RORTSK01("CLINICS","ALL") | 
|---|
|  | 35 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"CLINICS","ALL",PARTAG) | 
|---|
|  | 36 | Q +$G(LTAG) | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | ;***** PROCESSES THE LIST OF CPT CODES | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | ; .RORTSK       Task number and task parameters | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | ; PARTAG        Reference (IEN) to the parent tag | 
|---|
|  | 43 | ; | 
|---|
|  | 44 | ; Return Values: | 
|---|
|  | 45 | ;       <0  Error code | 
|---|
|  | 46 | ;       >0  IEN of the CPTLST element | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | CPTLST(RORTSK,PARTAG) ; | 
|---|
|  | 49 | N CPT,IEN,LTAG,TMP | 
|---|
|  | 50 | I $D(RORTSK("PARAMS","CPTLST","C"))>1  D | 
|---|
|  | 51 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"CPTLST",,PARTAG)  Q:LTAG'>0 | 
|---|
|  | 52 | . S IEN=0 | 
|---|
|  | 53 | . F  S IEN=$O(RORTSK("PARAMS","CPTLST","C",IEN))  Q:IEN'>0  D | 
|---|
|  | 54 | . . S CPT=$P(RORTSK("PARAMS","CPTLST","C",IEN),U)  Q:CPT="" | 
|---|
|  | 55 | . . D ADDVAL^RORTSK11(RORTSK,"CPT",CPT,LTAG,,IEN) | 
|---|
|  | 56 | E  D:$$PARAM^RORTSK01("CPTLST","ALL") | 
|---|
|  | 57 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"CPTLST","ALL",PARTAG) | 
|---|
|  | 58 | Q +$G(LTAG) | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | ;***** PROCESSES THE LIST OF DIVISIONS | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | ; .RORTSK       Task number and task parameters | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | ; PARTAG        Reference (IEN) to the parent tag | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | ; Return Values: | 
|---|
|  | 67 | ;       <0  Error code | 
|---|
|  | 68 | ;       >0  IEN of the DIVISIONS element | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | DIVLST(RORTSK,PARTAG) ; | 
|---|
|  | 71 | N IEN,LTAG,RORMSG,TMP | 
|---|
|  | 72 | I $D(RORTSK("PARAMS","DIVISIONS","C"))>1  D | 
|---|
|  | 73 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"DIVISIONS",,PARTAG)  Q:LTAG'>0 | 
|---|
|  | 74 | . S IEN=0 | 
|---|
|  | 75 | . F  S IEN=$O(RORTSK("PARAMS","DIVISIONS","C",IEN))  Q:IEN'>0  D | 
|---|
|  | 76 | . . S TMP=$$GET1^DIQ(40.8,IEN_",",.01,,,"RORMSG") | 
|---|
|  | 77 | . . D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,40.8,IEN_",") | 
|---|
|  | 78 | . . Q:TMP="" | 
|---|
|  | 79 | . . D ADDVAL^RORTSK11(RORTSK,"DIVISION",TMP,LTAG,,IEN) | 
|---|
|  | 80 | E  D:$$PARAM^RORTSK01("DIVISIONS","ALL") | 
|---|
|  | 81 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"DIVISIONS","ALL",PARTAG) | 
|---|
|  | 82 | Q +$G(LTAG) | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | ;***** PROCESSES THE LIST OF LAB TESTS | 
|---|
|  | 85 | ; | 
|---|
|  | 86 | ; .RORTSK       Task number and task parameters | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | ; PARTAG        Reference (IEN) to the parent tag | 
|---|
|  | 89 | ; | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | ; .ROR8LST      Reference to a local variable, which contains a | 
|---|
|  | 92 | ;               closed root of an array. Descriptors of selected | 
|---|
|  | 93 | ;               lab tests will be returned into this array. | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | ;                 @ROR8LTST@(ResultNode,TestIEN) | 
|---|
|  | 96 | ;                   ^01: Test IEN (in file #60) | 
|---|
|  | 97 | ;                   ^02: Test name | 
|---|
|  | 98 | ;                   ^03: 99 | 
|---|
|  | 99 | ;                   ^04: "Other" | 
|---|
|  | 100 | ;                   ^05: Location subscript | 
|---|
|  | 101 | ;                   ^06: Result node | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | ;               If this parameter is undefined or empty, then a | 
|---|
|  | 104 | ;               temporary buffer is allocated by the $$ALLOC^RORTMP | 
|---|
|  | 105 | ;               function and its root is returned via this parameter. | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ;               If all drugs are requested (the "ALL" attribute of | 
|---|
|  | 108 | ;               the "DRUGS" tag), then "*" is returned. | 
|---|
|  | 109 | ; | 
|---|
|  | 110 | ; [ROR8LRG]     Closed root of a node where the lab tests with | 
|---|
|  | 111 | ;               defined range values will be returned. By default | 
|---|
|  | 112 | ;               ($G(ROR8LRG)=""), this list is not compiled. | 
|---|
|  | 113 | ; | 
|---|
|  | 114 | ;                  @ROR8LRG@(TestIEN, | 
|---|
|  | 115 | ;                    "H") = Low | 
|---|
|  | 116 | ;                    "L") = High | 
|---|
|  | 117 | ; | 
|---|
|  | 118 | ;               "H", "L", or both will be defined. | 
|---|
|  | 119 | ; | 
|---|
|  | 120 | ; If the source list contains lab test panels, all corresponding | 
|---|
|  | 121 | ; lab tests are added to the @ROR8LST array but only a single tag | 
|---|
|  | 122 | ; is added to the XML list. | 
|---|
|  | 123 | ; | 
|---|
|  | 124 | ; Return Values: | 
|---|
|  | 125 | ;       <0  Error code | 
|---|
|  | 126 | ;       >0  IEN of the LABTESTS element | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | LTLST(RORTSK,PARTAG,ROR8LST,ROR8LRG) ; | 
|---|
|  | 129 | N ALL,BUF,I,LTAG,LTIEN,LTOPTS,TMP | 
|---|
|  | 130 | S ALL=+$$PARAM^RORTSK01("LABTESTS","ALL") | 
|---|
|  | 131 | S (LTAG,RC)=0 | 
|---|
|  | 132 | ; | 
|---|
|  | 133 | ;=== Validate parameters | 
|---|
|  | 134 | I 'ALL  D  K @ROR8LST | 
|---|
|  | 135 | . S:$G(ROR8LST)="" ROR8LST=$$ALLOC^RORTMP() | 
|---|
|  | 136 | E  S ROR8LST="*" | 
|---|
|  | 137 | ; | 
|---|
|  | 138 | ;=== Process the drug options (if present) | 
|---|
|  | 139 | M LTOPTS=RORTSK("PARAMS","LABTESTS","A") | 
|---|
|  | 140 | I $D(LTOPTS)>1  D  Q:LTAG'>0 LTAG | 
|---|
|  | 141 | . N ATTR,REGIEN | 
|---|
|  | 142 | . S ATTR=$S(ALL:"ALL",1:"") | 
|---|
|  | 143 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"LABTESTS",ATTR,PARTAG) | 
|---|
|  | 144 | . Q:LTAG'>0 | 
|---|
|  | 145 | . ;--- Output option attributes | 
|---|
|  | 146 | . S ATTR="",RC=0 | 
|---|
|  | 147 | . F  S ATTR=$O(LTOPTS(ATTR))  Q:ATTR=""  D  Q:RC<0 | 
|---|
|  | 148 | . . S RC=$$ADDATTR^RORTSK11(RORTSK,LTAG,ATTR,"1") | 
|---|
|  | 149 | . I RC<0  S LTAG=RC  Q | 
|---|
|  | 150 | . S ATTR=$$OPTXT^RORXU002(.LTOPTS) | 
|---|
|  | 151 | . D:ATTR'="" ADDATTR^RORTSK11(RORTSK,LTAG,"DESCR",ATTR) | 
|---|
|  | 152 | ; | 
|---|
|  | 153 | ;=== Process the list of tests (if present) | 
|---|
|  | 154 | I 'ALL,$D(RORTSK("PARAMS","LABTESTS","C"))>1  D | 
|---|
|  | 155 | . I LTAG'>0  D  Q:LTAG'>0 | 
|---|
|  | 156 | . . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"LABTESTS",,PARTAG) | 
|---|
|  | 157 | . S LTIEN=0 | 
|---|
|  | 158 | . F  S LTIEN=$O(RORTSK("PARAMS","LABTESTS","C",LTIEN))  Q:LTIEN'>0  D | 
|---|
|  | 159 | . . D LTLSTI(LTIEN,LTAG) | 
|---|
|  | 160 | ; | 
|---|
|  | 161 | Q $S(RC<0:RC,1:LTAG) | 
|---|
|  | 162 | ; | 
|---|
|  | 163 | ;***** CREATES THE LAB TEST ITEM(S) | 
|---|
|  | 164 | ; | 
|---|
|  | 165 | ; LTIEN         IEN of the lab test in the file #60 | 
|---|
|  | 166 | ; [LTAG]        IEN of the parent tag | 
|---|
|  | 167 | ; | 
|---|
|  | 168 | ; This is an internal entry point. Do NOT call it directly. | 
|---|
|  | 169 | ; | 
|---|
|  | 170 | LTLSTI(LTIEN,LTAG) ; | 
|---|
|  | 171 | N BUF,I,IENS,ITEM,LTNAME,LTNODE,PLTCNT,RORBUF,RORMSG,TMP | 
|---|
|  | 172 | ;--- Load the lab test parameters | 
|---|
|  | 173 | S IENS=LTIEN_"," | 
|---|
|  | 174 | D GETS^DIQ(60,IENS,".01;5","EI","RORBUF","RORMSG") | 
|---|
|  | 175 | D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,60,IENS) | 
|---|
|  | 176 | S LTNAME=$G(RORBUF(60,IENS,.01,"E"))  Q:LTNAME="" | 
|---|
|  | 177 | ;--- Output the tag and update the list of ranges | 
|---|
|  | 178 | D:$G(LTAG)>0 | 
|---|
|  | 179 | . S ITEM=$$ADDVAL^RORTSK11(RORTSK,"LT",LTNAME,LTAG,,LTIEN) | 
|---|
|  | 180 | . S TMP=$$UP^XLFSTR($G(RORTSK("PARAMS","LABTESTS","C",LTIEN,"L"))) | 
|---|
|  | 181 | . D:TMP'="" | 
|---|
|  | 182 | . . D ADDATTR^RORTSK11(RORTSK,ITEM,"LOW",TMP) | 
|---|
|  | 183 | . . S:$G(ROR8LRG)'="" @ROR8LRG@(LTIEN,"L")=TMP | 
|---|
|  | 184 | . S TMP=$$UP^XLFSTR($G(RORTSK("PARAMS","LABTESTS","C",LTIEN,"H"))) | 
|---|
|  | 185 | . D:TMP'="" | 
|---|
|  | 186 | . . D ADDATTR^RORTSK11(RORTSK,ITEM,"HIGH",TMP) | 
|---|
|  | 187 | . . S:$G(ROR8LRG)'="" @ROR8LRG@(LTIEN,"H")=TMP | 
|---|
|  | 188 | ;--- Process the panel | 
|---|
|  | 189 | D ATESTS^ORWLRR(.BUF,LTIEN) | 
|---|
|  | 190 | I $D(BUF)>1  S I="",PLTCNT=0  D  Q:PLTCNT>1 | 
|---|
|  | 191 | . F  S I=$O(BUF(I))  Q:I=""  D | 
|---|
|  | 192 | . . S TMP=+$P(BUF(I),U),PLTCNT=PLTCNT+1 | 
|---|
|  | 193 | . . D:TMP'=LTIEN LTLSTI(TMP) | 
|---|
|  | 194 | ;--- Create the reference | 
|---|
|  | 195 | S LTNODE=$P($G(RORBUF(60,IENS,5,"I")),";",2)  Q:LTNODE="" | 
|---|
|  | 196 | S BUF=LTIEN_U_LTNAME_U_"99^Other" | 
|---|
|  | 197 | S $P(BUF,U,5)=$P(RORBUF(60,IENS,5,"I"),";")  ; Subscript | 
|---|
|  | 198 | S $P(BUF,U,6)=LTNODE                         ; Result node | 
|---|
|  | 199 | S @ROR8LST@(LTNODE,LTIEN)=BUF | 
|---|
|  | 200 | Q | 
|---|
|  | 201 | ; | 
|---|
|  | 202 | ;***** CHECKS IF THE OPTIONAL COLUMN IS SELECTED | 
|---|
|  | 203 | ; | 
|---|
|  | 204 | ; NAME          Column name | 
|---|
|  | 205 | ; | 
|---|
|  | 206 | ; Return Values: | 
|---|
|  | 207 | ;        0  Skip the field | 
|---|
|  | 208 | ;       >0  Include in report | 
|---|
|  | 209 | ; | 
|---|
|  | 210 | OPTCOL(NAME) ; | 
|---|
|  | 211 | Q $S($G(NAME)'="":$D(RORTSK("PARAMS","OPTIONAL_COLUMNS","C",NAME)),1:0) | 
|---|
|  | 212 | ; | 
|---|
|  | 213 | ;***** CHECK IF ONLY THE SUMMARY SHOULD BE GENERATED | 
|---|
|  | 214 | SMRYONLY() ; | 
|---|
|  | 215 | Q:$$PARAM^RORTSK01("MAXUTNUM")'="" 0 | 
|---|
|  | 216 | Q:$$PARAM^RORTSK01("MINRPNUM")'="" 0 | 
|---|
|  | 217 | Q 1 | 
|---|