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