| 1 | RORRP025 ;HCIOFO/SG - RPC: RORICR CDC LOAD ; 2/3/04 8:11am
 | 
|---|
| 2 |  ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine uses the following IAs:
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; #10060        Read access to the NEW PERSON file (#200)
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;--------------------------------------------------------------------
 | 
|---|
| 9 |  ; Registry: [VA HIV]
 | 
|---|
| 10 |  ;--------------------------------------------------------------------
 | 
|---|
| 11 |  Q
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ;***** DEMOGRAPHIC INFORMATION (III)
 | 
|---|
| 14 | CDM(IENS) ;
 | 
|---|
| 15 |  N BUF,RC,RORBUF,TMP
 | 
|---|
| 16 |  S BUF="CDM"
 | 
|---|
| 17 |  S RC=$$LOAD^RORRP026(IENS,"CDM^RORRP026",.BUF,.RORBUF)  Q:RC<0 RC
 | 
|---|
| 18 |  ;--- Age at diagnosis
 | 
|---|
| 19 |  S TMP=+$G(RORBUF(799.4,IENS,9.02,"I"))
 | 
|---|
| 20 |  S:TMP=1 $P(BUF,U,4)=$G(RORBUF(799.4,IENS,9.03,"I"))
 | 
|---|
| 21 |  S:TMP=2 $P(BUF,U,4)=$G(RORBUF(799.4,IENS,9.04,"I"))
 | 
|---|
| 22 |  ;--- Country of birth
 | 
|---|
| 23 |  S TMP=+$G(RORBUF(799.4,IENS,9.07,"I"))
 | 
|---|
| 24 |  S:TMP=7 $P(BUF,U,8)=$G(RORBUF(799.4,IENS,9.08,"I"))
 | 
|---|
| 25 |  S:TMP=8 $P(BUF,U,8)=$G(RORBUF(799.4,IENS,9.09,"I"))
 | 
|---|
| 26 |  ;--- Store the data into the result buffer
 | 
|---|
| 27 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 28 |  Q 0
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ;***** COMMENTS (X)
 | 
|---|
| 31 | CMT(IENS) ;
 | 
|---|
| 32 |  N BUF,I,RC,RORBUF,RORMSG,TMP
 | 
|---|
| 33 |  S TMP=$$GET1^DIQ(799.4,IENS,25,,"RORBUF","RORMSG")
 | 
|---|
| 34 |  I $G(DIERR)  D  Q RC
 | 
|---|
| 35 |  . S RC=$$DBS^RORERR("RORMSG",-9,,,799.4,IENS)
 | 
|---|
| 36 |  ;--- Store the data into the result buffer
 | 
|---|
| 37 |  S I=0
 | 
|---|
| 38 |  F  S I=$O(RORBUF(I))  Q:I'>0  D
 | 
|---|
| 39 |  . S RORPTR=RORPTR+1,RORDST(RORPTR)="CMT"_U_I_U_RORBUF(I)
 | 
|---|
| 40 |  Q 0
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ;***** CLINICAL STATUS (VIII)
 | 
|---|
| 43 | CS(IENS) ;
 | 
|---|
| 44 |  N BUF,I,IENS1,RC,RORBUF,RORMSG,TMP
 | 
|---|
| 45 |  S BUF="CS"
 | 
|---|
| 46 |  S RC=$$LOAD^RORRP026(IENS,"CS^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 47 |  ;--- Store the data into the result buffer
 | 
|---|
| 48 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 49 |  ;--- Load the AIDS Indicator diseases
 | 
|---|
| 50 |  S IENS1=","_IENS,TMP="@;.01I;.02I;.03I"
 | 
|---|
| 51 |  D LIST^DIC(799.41,IENS1,TMP,,,,,"B",,,"RORBUF","RORMSG")
 | 
|---|
| 52 |  I $G(DIERR)  D  Q RC
 | 
|---|
| 53 |  . S RC=$$DBS^RORERR("RORMSG",-9,,,799.41,IENS1)
 | 
|---|
| 54 |  ;--- Process the list
 | 
|---|
| 55 |  S I=0
 | 
|---|
| 56 |  F  S I=$O(RORBUF("DILIST","ID",I))  Q:I'>0  D
 | 
|---|
| 57 |  . S BUF="AID"_U_$G(RORBUF("DILIST","ID",I,.01))
 | 
|---|
| 58 |  . S TMP=$G(RORBUF("DILIST","ID",I,.02))  Q:TMP'>0
 | 
|---|
| 59 |  . S $P(BUF,U,3)=TMP
 | 
|---|
| 60 |  . S $P(BUF,U,4)=$$DATE^RORRP026($G(RORBUF("DILIST","ID",I,.03)))
 | 
|---|
| 61 |  . ;--- Store the data into the result buffer
 | 
|---|
| 62 |  . S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 63 |  Q 0
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ;***** PROCESSES THE ERROR(S) AND UNLOCKS THE RECORDS
 | 
|---|
| 66 | ERROR(RESULTS,RC) ;
 | 
|---|
| 67 |  D RPCSTK^RORERR(.RESULTS,RC)
 | 
|---|
| 68 |  D UNLOCK^RORLOCK(.RORLOCK)
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  ;***** FACILITY OF DIAGNOSIS (IV)
 | 
|---|
| 72 | FD(IENS) ;
 | 
|---|
| 73 |  N BUF,RC,RORBUF,TMP
 | 
|---|
| 74 |  S BUF="FD"
 | 
|---|
| 75 |  S RC=$$LOAD^RORRP026(IENS,"FD^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 76 |  ;--- Store the data into the result buffer
 | 
|---|
| 77 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 78 |  Q 0
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ;***** FORM HEADERS
 | 
|---|
| 81 | HDR(IENS) ;
 | 
|---|
| 82 |  N BUF,IENS200,RC,RORBUF,RORMSG,TMP
 | 
|---|
| 83 |  S BUF="HDR"
 | 
|---|
| 84 |  S RC=$$LOAD^RORRP026(IENS,"HDR^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 85 |  ;--- Date when the CDC form was completed
 | 
|---|
| 86 |  S:$P(BUF,U,3)="" $P(BUF,U,3)=$$DT^XLFDT
 | 
|---|
| 87 |  ;--- Person who is completing the form
 | 
|---|
| 88 |  S IENS200=DUZ_","
 | 
|---|
| 89 |  D GETS^DIQ(200,IENS200,".01;.132",,"RORBUF","RORMSG")
 | 
|---|
| 90 |  Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,200,IENS200)
 | 
|---|
| 91 |  S $P(BUF,U,4)=DUZ
 | 
|---|
| 92 |  S $P(BUF,U,5)=$G(RORBUF(200,IENS200,.01))
 | 
|---|
| 93 |  S $P(BUF,U,6)=$G(RORBUF(200,IENS200,.132))
 | 
|---|
| 94 |  ;--- Medical record number (it is the SSN now)
 | 
|---|
| 95 |  S $P(BUF,U,7)=$P($G(RORDST(1)),U,6)
 | 
|---|
| 96 |  ;--- Store the data into the result buffer
 | 
|---|
| 97 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 98 |  Q 0
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ;***** LABORATORY DATA (VI)
 | 
|---|
| 101 | LD(IENS) ;
 | 
|---|
| 102 |  N BUF,FLD,RC,RORBUF,TMP
 | 
|---|
| 103 |  S BUF="LD1"
 | 
|---|
| 104 |  S RC=$$LOAD^RORRP026(IENS,"LD1^RORRP026",.BUF,.RORBUF)  Q:RC<0 RC
 | 
|---|
| 105 |  ;--- Positive HIV detection test
 | 
|---|
| 106 |  S FLD=$$PHIVFLD^RORRP026($P(BUF,U,12))
 | 
|---|
| 107 |  S:FLD $P(BUF,U,13)=$$DATE^RORRP026($G(RORBUF(799.4,IENS,FLD,"I")))
 | 
|---|
| 108 |  ;--- Store the data into the result buffer
 | 
|---|
| 109 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 110 |  ;--- The second segment
 | 
|---|
| 111 |  S BUF="LD2"
 | 
|---|
| 112 |  S RC=$$LOAD^RORRP026(IENS,"LD2^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 113 |  ;--- Store the data into the result buffer
 | 
|---|
| 114 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 115 |  Q 0
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ;***** LOADS THE ICR CDC DATA
 | 
|---|
| 118 |  ; RPC: [RORICR CDC LOAD]
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  ; .RORDST       Reference to a local variable where the results
 | 
|---|
| 121 |  ;               are returned to.
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ; REGIEN        Registry IEN
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  ; PATIEN        IEN of the registry patient (DFN)
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ; [LOCK]        Lock the ICR record before loading the data and
 | 
|---|
| 128 |  ;               leave it locked.
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ; Return Values:
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ; A negative value of the first "^"-piece of the RORDST(0)
 | 
|---|
| 133 |  ; indicates an error (see the RPCSTK^RORERR procedure for more
 | 
|---|
| 134 |  ; details).
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 |  ; If locking was requested (see the LOCK parameter) and the record
 | 
|---|
| 137 |  ; could not be locked then the first "^"-piece of the RORDST(0)
 | 
|---|
| 138 |  ; would be greater than 0. The RORDST(0) would contain the lock
 | 
|---|
| 139 |  ; descriptor and subsequent nodes of the global array would contain
 | 
|---|
| 140 |  ; the data (see below). The lock descriptor contains information
 | 
|---|
| 141 |  ; about the propcess, which owns the most recent lock of the record.
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  ; RORDST(0)             Lock Descriptor
 | 
|---|
| 144 |  ;                         ^01: Date/Time (FileMan)
 | 
|---|
| 145 |  ;                         ^02: User/Process name
 | 
|---|
| 146 |  ;                         ^03: User IEN (DUZ)
 | 
|---|
| 147 |  ;                         ^04: $JOB
 | 
|---|
| 148 |  ;                         ^05: Task number
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 |  ; THE DATA ARE LOADED ONLY FOR VIEWING PURPOSES (READ-ONLY)!
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 |  ; Otherwise, zero is returned in the RORDST(0) and the subsequent
 | 
|---|
| 153 |  ; nodes of the array contain the data.
 | 
|---|
| 154 |  ; 
 | 
|---|
| 155 |  ; RORDST(0)             0
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 |  ; RORDST(i)             Data Item
 | 
|---|
| 158 |  ;                         ^01: Type
 | 
|---|
| 159 |  ;                         ^02: Sequential Number or Item Code
 | 
|---|
| 160 |  ;                         ^03: Value
 | 
|---|
| 161 |  ;                         ^04: ...
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ;                       Item Types:
 | 
|---|
| 164 |  ;                         DEM  Demographic Information
 | 
|---|
| 165 |  ;                         ADR  Patient's Address
 | 
|---|
| 166 |  ;                         RCE  Race Information
 | 
|---|
| 167 |  ;                         ETN  Ethnicity Information
 | 
|---|
| 168 |  ;                         HDR  Headers
 | 
|---|
| 169 |  ;                         CDM  CDC Demographics
 | 
|---|
| 170 |  ;                         FD   Facility of Diagnosis
 | 
|---|
| 171 |  ;                         PH   Patient History
 | 
|---|
| 172 |  ;                         LD1  Laboratory Data
 | 
|---|
| 173 |  ;                         LD2  Laboratory Data
 | 
|---|
| 174 |  ;                         CS   Clinical Status
 | 
|---|
| 175 |  ;                         AID  AIDS Indicator Disease
 | 
|---|
| 176 |  ;                         TS1  Treatment/Services
 | 
|---|
| 177 |  ;                         TS2  Treatment/Services
 | 
|---|
| 178 |  ;                         CMT  Comments
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  ; See the CDC FIELD TABLE section (CDCFLDS^RORRP026) and the
 | 
|---|
| 181 |  ; description of the RORICR CDC LOAD remote procedure for details.
 | 
|---|
| 182 |  ;
 | 
|---|
| 183 | LOADCDC(RORDST,REGIEN,PATIEN,LOCK) ;
 | 
|---|
| 184 |  N BUF,IEN,RC,RDONLY,RORERRDL,RORLOCK,RORPTR
 | 
|---|
| 185 |  D CLEAR^RORERR("LOADCDC^RORRP025",1)
 | 
|---|
| 186 |  K RORDST  S (RDONLY,RORDST(0))=0
 | 
|---|
| 187 |  ;--- Check the parameters
 | 
|---|
| 188 |  S RC=0  D  I RC<0  D ERROR(.RORDST,RC)  Q
 | 
|---|
| 189 |  . ;--- Registry IEN
 | 
|---|
| 190 |  . I $G(REGIEN)'>0  D  Q
 | 
|---|
| 191 |  . . S RC=$$ERROR^RORERR(-88,,,,"REGIEN",$G(REGIEN))
 | 
|---|
| 192 |  . S REGIEN=+REGIEN
 | 
|---|
| 193 |  . ;--- Patient IEN
 | 
|---|
| 194 |  . I $G(PATIEN)'>0  D  Q
 | 
|---|
| 195 |  . . S RC=$$ERROR^RORERR(-88,,,,"PATIEN",$G(PATIEN))
 | 
|---|
| 196 |  . S PATIEN=+PATIEN
 | 
|---|
| 197 |  ;
 | 
|---|
| 198 |  ;--- Load the patient's demographic data
 | 
|---|
| 199 |  D GETPTDAT^RORRP021(.RORDST,PATIEN,"AER")
 | 
|---|
| 200 |  Q:$G(RORDST(0))<0
 | 
|---|
| 201 |  S RORPTR=+$O(RORDST(""),-1)
 | 
|---|
| 202 |  ;
 | 
|---|
| 203 |  ;--- Get the IEN of the registry record
 | 
|---|
| 204 |  S IEN=$$PRRIEN^RORUTL01(PATIEN,REGIEN)  Q:IEN'>0
 | 
|---|
| 205 |  S IENS=IEN_","
 | 
|---|
| 206 |  ;
 | 
|---|
| 207 |  ;--- Lock the record
 | 
|---|
| 208 |  I $G(LOCK)  D  I RDONLY<0  D ERROR(.RORDST,+RDONLY)  Q
 | 
|---|
| 209 |  . S RORLOCK(799.4,IENS)=""
 | 
|---|
| 210 |  . S RDONLY=$$LOCK^RORLOCK(799.4,IENS)
 | 
|---|
| 211 |  ;
 | 
|---|
| 212 |  ;--- Create the data segments
 | 
|---|
| 213 |  S RC=0  D  I RC<0  D ERROR(.RORDST,RC)  Q
 | 
|---|
| 214 |  . S RC=$$HDR(IENS)  Q:RC<0
 | 
|---|
| 215 |  . S RC=$$CDM(IENS)  Q:RC<0
 | 
|---|
| 216 |  . S RC=$$FD(IENS)   Q:RC<0
 | 
|---|
| 217 |  . S RC=$$PH(IENS)   Q:RC<0
 | 
|---|
| 218 |  . S RC=$$LD(IENS)   Q:RC<0
 | 
|---|
| 219 |  . S RC=$$CS(IENS)   Q:RC<0
 | 
|---|
| 220 |  . S RC=$$TS(IENS)   Q:RC<0
 | 
|---|
| 221 |  . S RC=$$CMT(IENS)  Q:RC<0
 | 
|---|
| 222 |  ;---
 | 
|---|
| 223 |  S RORDST(0)=RDONLY
 | 
|---|
| 224 |  Q
 | 
|---|
| 225 |  ;
 | 
|---|
| 226 |  ;***** PATIENT HISTORY (V)
 | 
|---|
| 227 | PH(IENS) ;
 | 
|---|
| 228 |  N BUF,RC,RORBUF,TMP
 | 
|---|
| 229 |  S BUF="PH"
 | 
|---|
| 230 |  S RC=$$LOAD^RORRP026(IENS,"PH^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 231 |  ;--- Store the data into the result buffer
 | 
|---|
| 232 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 233 |  Q 0
 | 
|---|
| 234 |  ;
 | 
|---|
| 235 |  ;***** TREATMENT/SERVICES REFERRALS (IX)
 | 
|---|
| 236 | TS(IENS) ;
 | 
|---|
| 237 |  N BUF,RC,RORBUF,TMP
 | 
|---|
| 238 |  S BUF="TS1"
 | 
|---|
| 239 |  S RC=$$LOAD^RORRP026(IENS,"TS1^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 240 |  ;--- Store the data into the result buffer
 | 
|---|
| 241 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 242 |  ;--- The second segment
 | 
|---|
| 243 |  S BUF="TS2"
 | 
|---|
| 244 |  S RC=$$LOAD^RORRP026(IENS,"TS2^RORRP026",.BUF)  Q:RC<0 RC
 | 
|---|
| 245 |  ;--- Store the data into the result buffer
 | 
|---|
| 246 |  S RORPTR=RORPTR+1,RORDST(RORPTR)=BUF
 | 
|---|
| 247 |  Q 0
 | 
|---|