| [613] | 1 | RORHIV03 ;HCIOFO/SG - CONVERSION OF THE FILE #158 ; 5/12/05 2:53pm
 | 
|---|
 | 2 |  ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  Q
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 |  ;***** TRANSFERS THE CDC COMMENTS TO THE MULTIPLE #25
 | 
|---|
 | 7 | CDCOMM() ;
 | 
|---|
 | 8 |  N CNT,I,IENS,RC,RORBUF,RORFDA,RORMSG,TMP
 | 
|---|
 | 9 |  S (CNT,RC)=0
 | 
|---|
 | 10 |  ;--- Load the old comments (non-empty ones)
 | 
|---|
 | 11 |  F I=3,2,1  D
 | 
|---|
 | 12 |  . S TMP=$G(^IMR(158,IMRIEN,I+9))
 | 
|---|
 | 13 |  . S:(TMP'="")!CNT RORBUF(I,0)=TMP,CNT=CNT+1
 | 
|---|
 | 14 |  ;--- Store the comments in the new word processing field
 | 
|---|
 | 15 |  D:$D(RORBUF)>1
 | 
|---|
 | 16 |  . S IENS=RORIEN_","
 | 
|---|
 | 17 |  . S RORFDA(799.4,IENS,25)="RORBUF"
 | 
|---|
 | 18 |  . D UPDATE^DIE(,"RORFDA",,"RORMSG")
 | 
|---|
 | 19 |  . I $G(DIERR)  D
 | 
|---|
 | 20 |  . . S RC=$$DBS^RORERR("RORMSG",-9,,,799.4,IENS)
 | 
|---|
 | 21 |  Q $S(RC<0:RC,1:0)
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  ;***** TRANSFERS THE PATIENT'S DATA FROM FILE #158 TO FILE #799.4
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 |  ; IMRIEN        IEN of the IMMUNOLOGY CASE STUDY file record
 | 
|---|
 | 26 |  ; RORIEN        IEN of the record of the ROR HIV RECORD file
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 |  ; Return Values:
 | 
|---|
 | 29 |  ;       <0  Error code
 | 
|---|
 | 30 |  ;        0  Ok
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 | CNVPTDAT(IMRIEN,RORIEN) ;
 | 
|---|
 | 33 |  N DA,DIK,RC,RORNODE,TMP
 | 
|---|
 | 34 |  S RORNODE=""
 | 
|---|
 | 35 |  ;--- Check the parameters
 | 
|---|
 | 36 |  I '$D(^IMR(158,IMRIEN,0))  D  Q RC
 | 
|---|
 | 37 |  . S RC=$$ERROR^RORERR(-88,,,,"IMRIEN",IMRIEN)
 | 
|---|
 | 38 |  I '$D(^RORDATA(799.4,RORIEN,0))  D  Q RC
 | 
|---|
 | 39 |  . S RC=$$ERROR^RORERR(-88,,,,"RORIEN",RORIEN)
 | 
|---|
 | 40 |  ;---
 | 
|---|
 | 41 |  S RORNODE=^RORDATA(799.4,RORIEN,0)
 | 
|---|
 | 42 |  D COPY(0,"42>2,23>3")
 | 
|---|
 | 43 |  D COPY(1,"7>4")
 | 
|---|
 | 44 |  I $P(RORNODE,U,2)=4  D  ; CLINICAL AIDS
 | 
|---|
 | 45 |  . S $P(RORNODE,U,2)=1,TMP=$P(RORNODE,U,3)\1
 | 
|---|
 | 46 |  . I TMP<1000000  S $P(RORNODE,U,3)=""  Q
 | 
|---|
 | 47 |  . S:'$E(TMP,4,5) $E(TMP,4,5)="01"
 | 
|---|
 | 48 |  . S:'$E(TMP,6,7) $E(TMP,6,7)="01"
 | 
|---|
 | 49 |  . S $P(RORNODE,U,3)=TMP
 | 
|---|
 | 50 |  E  S $P(RORNODE,U,2,3)=U
 | 
|---|
 | 51 |  D STORE(0)
 | 
|---|
 | 52 |  ;---
 | 
|---|
 | 53 |  D COPY(1,"6>1,34>5,9>9,10>10,11>11,12>12,13>13,14>14")
 | 
|---|
 | 54 |  D COPY(2,"16>4")
 | 
|---|
 | 55 |  D COPY(102,"8>7,23>8")
 | 
|---|
 | 56 |  D COPY(110,"1>2,2>3")
 | 
|---|
 | 57 |  D COPY(112,"5>6")
 | 
|---|
 | 58 |  D STORE(9)
 | 
|---|
 | 59 |  ;---
 | 
|---|
 | 60 |  D COPY(102,"19>5")
 | 
|---|
 | 61 |  D COPY(110,"4>1,5>4")
 | 
|---|
 | 62 |  D COPY(112,"7>2,8>3")
 | 
|---|
 | 63 |  D STORE(11)
 | 
|---|
 | 64 |  ;---
 | 
|---|
 | 65 |  D COPY(1,"16>2,17>3,18>4")
 | 
|---|
 | 66 |  D COPY(2,"54>1")
 | 
|---|
 | 67 |  D COPY(102,"10>7")
 | 
|---|
 | 68 |  D COPY(110,"16>5")
 | 
|---|
 | 69 |  D COPY(112,"6>6")
 | 
|---|
 | 70 |  D STORE(12)
 | 
|---|
 | 71 |  ;---
 | 
|---|
 | 72 |  D COPY(1,"26>3,20>6,28>7,29>8,30>9,31>10,32>12,21>13,22>14,23>15,24>17")
 | 
|---|
 | 73 |  D TRANSL(1,19,5,"1,2,3","1,2,8")
 | 
|---|
 | 74 |  D COPY(2,"21>1,23>2,53>4,55>18")
 | 
|---|
 | 75 |  D COPY(102,"14>16")
 | 
|---|
 | 76 |  D COPY(110,"3>11")
 | 
|---|
 | 77 |  D STORE(14)
 | 
|---|
 | 78 |  ;---
 | 
|---|
 | 79 |  D COPY(1,"35>1,36>9")
 | 
|---|
 | 80 |  D COPY(2,"49>5"),TRANSL(2,50,7,"P,N,I,U","1,0,8,9")
 | 
|---|
 | 81 |  D COPY(102,"20>11")
 | 
|---|
 | 82 |  D COPY(108,"27>2,28>6,29>8,30>12")
 | 
|---|
 | 83 |  D COPY(110,"17>3,18>4,19>13,20>14")
 | 
|---|
 | 84 |  D STORE(16)
 | 
|---|
 | 85 |  ;---
 | 
|---|
 | 86 |  D COPY(111,"10>1,11>2,12>3,13>4,14>5,1>6,2>7,3>8,4>9")
 | 
|---|
 | 87 |  D STORE(18)
 | 
|---|
 | 88 |  ;---
 | 
|---|
 | 89 |  D COPY(102,"21>1,22>3")
 | 
|---|
 | 90 |  D COPY(108,"31>2")
 | 
|---|
 | 91 |  D COPY(111,"5>4,6>5,7>6,8>7,9>8")
 | 
|---|
 | 92 |  D STORE(20)
 | 
|---|
 | 93 |  ;---
 | 
|---|
 | 94 |  D COPY(110,"6>1,7>2,8>4,9>5,10>6,11>7,12>8")
 | 
|---|
 | 95 |  D COPY(112,"11>3")
 | 
|---|
 | 96 |  D STORE(22)
 | 
|---|
 | 97 |  ;---
 | 
|---|
 | 98 |  D TRANSL(110,13,1,"1,2,9","1,0,9")
 | 
|---|
 | 99 |  D TRANSL(110,14,2,"1,2,9","1,0,9")
 | 
|---|
 | 100 |  D TRANSL(110,15,3,"1,2,9","1,0,9")
 | 
|---|
 | 101 |  D COPY(112,"1>4,2>5,3>6,4>7")
 | 
|---|
 | 102 |  D STORE(23)
 | 
|---|
 | 103 |  ;---
 | 
|---|
 | 104 |  S RC=$$INIDIAGS()  Q:RC<0 RC
 | 
|---|
 | 105 |  S RC=$$CDCOMM()  Q:RC<0 RC
 | 
|---|
 | 106 |  ;--- Reindex the entry
 | 
|---|
 | 107 |  S DIK="^RORDATA(799.4,",DA=RORIEN  D IX1^DIK
 | 
|---|
 | 108 |  Q 0
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  ;***** COPY THE FIELD DATA
 | 
|---|
 | 111 | COPY(SRCN,PTLIST) ;
 | 
|---|
 | 112 |  N DSTP,I,SRCP,TMP
 | 
|---|
 | 113 |  S:'$D(RORNODE(SRCN)) RORNODE(SRCN)=$G(^IMR(158,IMRIEN,SRCN))
 | 
|---|
 | 114 |  F I=1:1  S TMP=$P(PTLIST,",",I)  Q:TMP=""  D
 | 
|---|
 | 115 |  . S SRCP=+$P(TMP,">"),DSTP=+$P(TMP,">",2)
 | 
|---|
 | 116 |  . S TMP=$P(RORNODE(SRCN),U,SRCP)
 | 
|---|
 | 117 |  . S:TMP'="" $P(RORNODE,U,DSTP)=TMP
 | 
|---|
 | 118 |  Q
 | 
|---|
 | 119 |  ;
 | 
|---|
 | 120 |  ;***** TRANSFER INITIAL DIAGNOSES
 | 
|---|
 | 121 | INIDIAGS() ;
 | 
|---|
 | 122 |  ;;01^2;24^108;1
 | 
|---|
 | 123 |  ;;02^2;25^108;2
 | 
|---|
 | 124 |  ;;03^102;15^108;3
 | 
|---|
 | 125 |  ;;04^2;26^108;4
 | 
|---|
 | 126 |  ;;05^2;27^108;5
 | 
|---|
 | 127 |  ;;06^2;28^108;6
 | 
|---|
 | 128 |  ;;07^2;29^108;7
 | 
|---|
 | 129 |  ;;08^2;30^108;8
 | 
|---|
 | 130 |  ;;09^2;31^108;9
 | 
|---|
 | 131 |  ;;10^2;32^108;10
 | 
|---|
 | 132 |  ;;11^2;33^108;11
 | 
|---|
 | 133 |  ;;12^2;34^108;12
 | 
|---|
 | 134 |  ;;13^2;35^108;13
 | 
|---|
 | 135 |  ;;14^1;36^108;14
 | 
|---|
 | 136 |  ;;15^2;37^108;15
 | 
|---|
 | 137 |  ;;16^2;38^108;16
 | 
|---|
 | 138 |  ;;17^2;39^108;17
 | 
|---|
 | 139 |  ;;18^102;16^108;18
 | 
|---|
 | 140 |  ;;19^2;40^108;19
 | 
|---|
 | 141 |  ;;20^2;41^108;20
 | 
|---|
 | 142 |  ;;21^2;42^108;21
 | 
|---|
 | 143 |  ;;22^102;17^108;22
 | 
|---|
 | 144 |  ;;23^2;43^108;23
 | 
|---|
 | 145 |  ;;24^2;44^108;24
 | 
|---|
 | 146 |  ;;25^2;45^108;25
 | 
|---|
 | 147 |  ;;26^2;46^108;26
 | 
|---|
 | 148 |  ;
 | 
|---|
 | 149 |  N BUF,DATE,DIAG,DIEN,I,IENS,RC,RORFDA,RORILST,RORMSG,TMP
 | 
|---|
 | 150 |  K ^RORDATA(799.4,RORIEN,10)  S RC=0
 | 
|---|
 | 151 |  ;--- Load the old data nodes (if they have not been loaded yet)
 | 
|---|
 | 152 |  F I=2,102,108  D:'$D(RORNODE(I))
 | 
|---|
 | 153 |  . S RORNODE(I)=$G(^IMR(158,IMRIEN,I))
 | 
|---|
 | 154 |  ;--- Prepare the data
 | 
|---|
 | 155 |  F I=1:1  S BUF=$P($T(INIDIAGS+I),";;",2,99)  Q:BUF=""  D
 | 
|---|
 | 156 |  . S DIEN=+BUF
 | 
|---|
 | 157 |  . S TMP=$P(BUF,U,2),DX=$P(RORNODE(+TMP),U,$P(TMP,";",2))
 | 
|---|
 | 158 |  . S DX=$TR(DX,"DPN0","12")  Q:DX=""
 | 
|---|
 | 159 |  . S TMP=$P(BUF,U,3),DATE=$P(RORNODE(+TMP),U,$P(TMP,";",2))
 | 
|---|
 | 160 |  . ;---
 | 
|---|
 | 161 |  . S IENS="+"_I_","_RORIEN_","
 | 
|---|
 | 162 |  . S RORFDA(799.41,IENS,.01)=DIEN
 | 
|---|
 | 163 |  . S RORFDA(799.41,IENS,.02)=DX
 | 
|---|
 | 164 |  . S RORFDA(799.41,IENS,.03)=DATE
 | 
|---|
 | 165 |  . S RORILST(I)=DIEN
 | 
|---|
 | 166 |  ;--- Store the data
 | 
|---|
 | 167 |  D:$D(RORFDA)>1
 | 
|---|
 | 168 |  . D UPDATE^DIE(,"RORFDA","RORILST","RORMSG")
 | 
|---|
 | 169 |  . I $G(DIERR)  D  Q
 | 
|---|
 | 170 |  . . S RC=$$DBS^RORERR("RORMSG",-9,,,799.41)
 | 
|---|
 | 171 |  ;---
 | 
|---|
 | 172 |  Q $S(RC<0:RC,1:0)
 | 
|---|
 | 173 |  ;
 | 
|---|
 | 174 |  ;***** TEMPORARY 'AFTER UPDATE' CALL-BACK ENTRY POINT
 | 
|---|
 | 175 |  ;
 | 
|---|
 | 176 |  ; RORIEN        An IEN of the newly added registry record
 | 
|---|
 | 177 |  ; PATIEN        Patient IEN
 | 
|---|
 | 178 |  ; REGIEN        Registry IEN
 | 
|---|
 | 179 |  ;
 | 
|---|
 | 180 |  ; Return Values:
 | 
|---|
 | 181 |  ;       <0  Error Code
 | 
|---|
 | 182 |  ;        0  Ok
 | 
|---|
 | 183 |  ;
 | 
|---|
 | 184 | POSTUPD(RORIEN,PATIEN,REGIEN) ;
 | 
|---|
 | 185 |  N CODE,IEN158,IENS,RC,RORFDA,RORMSG,TMP
 | 
|---|
 | 186 |  ;--- Perform the standard HIV post-update actions
 | 
|---|
 | 187 |  S RC=$$POSTUPD^RORUPD62(RORIEN,PATIEN,REGIEN)  Q:RC<0 RC
 | 
|---|
 | 188 |  ;--- Check if the patient is in the ICR v2.1
 | 
|---|
 | 189 |  S CODE=$$XOR^RORUTL03(PATIEN)
 | 
|---|
 | 190 |  S IEN158=$O(^IMR(158,"B",CODE,""))  Q:IEN158'>0 0
 | 
|---|
 | 191 |  S IENS=RORIEN_","
 | 
|---|
 | 192 |  ;--- Populate the DATE ENTERED with the date of first selection rule
 | 
|---|
 | 193 |  S TMP=$$GET1^DIQ(798,IENS,3.2,"I",,"RORMSG")
 | 
|---|
 | 194 |  D:$G(DIERR) DBS^RORERR("RORMSG",-9,,PATIEN,798,IENS)
 | 
|---|
 | 195 |  S:TMP>0 RORFDA(798,IENS,1)=TMP
 | 
|---|
 | 196 |  ;--- Convert the patient's data
 | 
|---|
 | 197 |  D:$$CNVPTDAT(IEN158,RORIEN)'<0
 | 
|---|
 | 198 |  . ;--- Replace the 'Pending' flag with 'Active'
 | 
|---|
 | 199 |  . S RORFDA(798,IENS,3)=0    ; STATUS (Pending -> Active)
 | 
|---|
 | 200 |  . S RORFDA(798,IENS,11)="@" ; DON'T SEND
 | 
|---|
 | 201 |  ;--- Update the registry record if necessary
 | 
|---|
 | 202 |  I $D(RORFDA)>1  D  Q:RC<0 RC
 | 
|---|
 | 203 |  . D FILE^DIE(,"RORFDA","RORMSG")
 | 
|---|
 | 204 |  . S:$G(DIERR) RC=$$DBS^RORERR("RORMSG",-9,,PATIEN,798,IENS)
 | 
|---|
 | 205 |  ;---
 | 
|---|
 | 206 |  Q 0
 | 
|---|
 | 207 |  ;
 | 
|---|
 | 208 |  ;***** CREATES THE NEW DATA NODE IN THE RECORD OF THE FILE #799.4
 | 
|---|
 | 209 | STORE(DSTN) ;
 | 
|---|
 | 210 |  K ^RORDATA(799.4,RORIEN,DSTN)
 | 
|---|
 | 211 |  S:RORNODE'="" ^RORDATA(799.4,RORIEN,DSTN)=RORNODE
 | 
|---|
 | 212 |  S RORNODE=""
 | 
|---|
 | 213 |  Q
 | 
|---|
 | 214 |  ;
 | 
|---|
 | 215 |  ;***** TRANSLATE THE SET OF CODES
 | 
|---|
 | 216 | TRANSL(SRCN,SRCP,DSTP,FROM,TO) ;
 | 
|---|
 | 217 |  N TMP
 | 
|---|
 | 218 |  S:'$D(RORNODE(SRCN)) RORNODE(SRCN)=$G(^IMR(158,IMRIEN,SRCN))
 | 
|---|
 | 219 |  S TMP=$P(RORNODE(SRCN),U,SRCP)
 | 
|---|
 | 220 |  S:TMP'="" $P(RORNODE,U,DSTP)=$TR(TMP,FROM,TO)
 | 
|---|
 | 221 |  Q
 | 
|---|