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