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