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