1 | RORX003A ;HCIOFO/SG - GENERAL UTILIZATION AND DEMOGRAPHICS ; 11/14/06 8:50am
|
---|
2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
|
---|
3 | ;
|
---|
4 | ; This routine uses the following IAs:
|
---|
5 | ;
|
---|
6 | ; #10061 2^VADPT (supported)
|
---|
7 | ;
|
---|
8 | Q
|
---|
9 | ;
|
---|
10 | ;***** INCREMENTS SUMMARY COUNTER
|
---|
11 | INCSUM(SUMMARY,VAL) ;
|
---|
12 | S:$G(VAL)="" VAL="NO DATA"
|
---|
13 | S RORSUM(SUMMARY,VAL)=$G(RORSUM(SUMMARY,VAL))+1
|
---|
14 | Q
|
---|
15 | ;
|
---|
16 | ;***** ADDS THE PATIENT DATA TO THE REPORT
|
---|
17 | ;
|
---|
18 | ; IENS IENS of the patient's record in the registry
|
---|
19 | ; PARTAG Reference (IEN) to the parent tag
|
---|
20 | ;
|
---|
21 | ; Return Values:
|
---|
22 | ; <0 Error code
|
---|
23 | ; 0 Ok
|
---|
24 | ; >0 Skip the patient
|
---|
25 | ;
|
---|
26 | PATIENT(IENS,PARTAG) ;
|
---|
27 | N DFN,IEN,NAME,RC,RORBUF,RORMSG,TMP,UTIL,VA,VADM,VAERR,VAHOW,VAPTYP,VAROOT
|
---|
28 | S RC=0
|
---|
29 | ;
|
---|
30 | ;--- Get the data from the ROR REGISTRY RECORD file
|
---|
31 | I $G(RORFL798)'="" D Q:RC<0 RC
|
---|
32 | . D GETS^DIQ(798,IENS,RORFL798,"I","RORBUF","RORMSG")
|
---|
33 | . S:$G(DIERR) RC=$$DBS^RORERR("RORMSG",-9,,,798,IENS)
|
---|
34 | S DFN=$G(RORBUF(798,IENS,.01,"I"))
|
---|
35 | ;
|
---|
36 | ;--- Skip a patient without utilization
|
---|
37 | S UTIL=$$UTIL^RORXU003(RORSDT,ROREDT,DFN,.RORUTIL)
|
---|
38 | Q:'UTIL 1
|
---|
39 | ;
|
---|
40 | ;--- Get the data from the ROR HIV STUDY file
|
---|
41 | I $G(RORFLICR)'="" D Q:RC<0 RC
|
---|
42 | . D GETS^DIQ(799.4,IENS,RORFLICR,"I","RORBUF","RORMSG")
|
---|
43 | . I $G(DIERR),'$D(RORMSG("DIERR","E",601)) D Q
|
---|
44 | . . S RC=$$DBS^RORERR("RORMSG",-9,,,799.4,IENS)
|
---|
45 | ;
|
---|
46 | ;--- Load the demographic data
|
---|
47 | D 2^VADPT
|
---|
48 | ;
|
---|
49 | ;--- The <PATIENT> tag
|
---|
50 | S PTAG=$$ADDVAL^RORTSK11(RORTSK,"PATIENT",,PARTAG,,DFN)
|
---|
51 | Q:PTAG<0 PTAG S RORSUM=$G(RORSUM)+1
|
---|
52 | ;--- Patient Name
|
---|
53 | D ADDVAL^RORTSK11(RORTSK,"NAME",VADM(1),PTAG,1)
|
---|
54 | ;--- SSN or LAST4
|
---|
55 | I $$OPTCOL^RORXU006("SSN") D
|
---|
56 | . D ADDVAL^RORTSK11(RORTSK,"SSN",$P(VADM(2),U),PTAG,2)
|
---|
57 | E D ADDVAL^RORTSK11(RORTSK,"LAST4",VA("BID"),PTAG,2)
|
---|
58 | ;
|
---|
59 | ;--- Date of Birth
|
---|
60 | D:$$OPTCOL^RORXU006("DOB")
|
---|
61 | . S TMP=$$DATE^RORXU002(VADM(3)\1)
|
---|
62 | . D ADDVAL^RORTSK11(RORTSK,"DOB",TMP,PTAG,1)
|
---|
63 | . S TMP=$P($$FMTE^XLFDT(TMP,7),"/")
|
---|
64 | . D INCSUM("DOB",$S(TMP'<RORDTE0:TMP,TMP>0:0,1:""))
|
---|
65 | ;
|
---|
66 | ;--- Age
|
---|
67 | D:$$OPTCOL^RORXU006("AGE")
|
---|
68 | . S TMP=+$G(VADM(6)) ; Date of Death
|
---|
69 | . S TMP=$S(TMP'>0:RORAGEDT,TMP<RORAGEDT:TMP,1:RORAGEDT)
|
---|
70 | . S TMP=$$FMDIFF^XLFDT(TMP,+VADM(3))\365
|
---|
71 | . D ADDVAL^RORTSK11(RORTSK,"AGE",$S(TMP>0:TMP,1:""),PTAG,1)
|
---|
72 | . Q:TMP'>0
|
---|
73 | . S RORSUM("AGE")=$G(RORSUM("AGE"))+1
|
---|
74 | . S RORSUM("AGE","Average")=$G(RORSUM("AGE","Average"))+TMP
|
---|
75 | . D INCSUM("AGE",TMP-(TMP#10))
|
---|
76 | ;
|
---|
77 | ;--- Sex
|
---|
78 | D:$$OPTCOL^RORXU006("SEX")
|
---|
79 | . S TMP=$P(VADM(5),U,2)
|
---|
80 | . D ADDVAL^RORTSK11(RORTSK,"SEX",TMP,PTAG,1)
|
---|
81 | . D INCSUM("SEX",TMP)
|
---|
82 | ;
|
---|
83 | ;--- Race
|
---|
84 | D:$$OPTCOL^RORXU006("RACE")
|
---|
85 | . N I,SUMVAL,TABLE
|
---|
86 | . S TABLE=$$ADDVAL^RORTSK11(RORTSK,"RACES",,PTAG)
|
---|
87 | . I $G(VADM(12))>0 S I="" D
|
---|
88 | . . F S I=$O(VADM(12,I)) Q:I="" D
|
---|
89 | . . . S SUMVAL=$P(VADM(12,I),U,2)
|
---|
90 | . . . D ADDVAL^RORTSK11(RORTSK,"RACE",SUMVAL,TABLE)
|
---|
91 | . . S:VADM(12)>1 SUMVAL="MULTIPLE VALUES"
|
---|
92 | . E D ADDVAL^RORTSK11(RORTSK,"RACE",,TABLE)
|
---|
93 | . D INCSUM("RACE",$G(SUMVAL))
|
---|
94 | ;
|
---|
95 | ;--- Ethnicity
|
---|
96 | D:$$OPTCOL^RORXU006("RACE")
|
---|
97 | . N I,SUMVAL,TABLE
|
---|
98 | . S TABLE=$$ADDVAL^RORTSK11(RORTSK,"ETHNS",,PTAG)
|
---|
99 | . I $G(VADM(11))>0 S I="" D
|
---|
100 | . . F S I=$O(VADM(11,I)) Q:I="" D
|
---|
101 | . . . S SUMVAL=$P(VADM(11,I),U,2)
|
---|
102 | . . . D ADDVAL^RORTSK11(RORTSK,"ETHN",SUMVAL,TABLE)
|
---|
103 | . . S:VADM(11)>1 SUMVAL="MULTIPLE VALUES"
|
---|
104 | . E D ADDVAL^RORTSK11(RORTSK,"ETHN",,TABLE)
|
---|
105 | . D INCSUM("ETHN",$G(SUMVAL))
|
---|
106 | ;
|
---|
107 | ;--- Risk factors
|
---|
108 | D:$$OPTCOL^RORXU006("RISK")
|
---|
109 | . N I,RISKS
|
---|
110 | . S RISKS=$$RISKS^RORXU005(+IENS) S:RISKS<0 RISKS=""
|
---|
111 | . D ADDVAL^RORTSK11(RORTSK,"RISK",RISKS,PTAG)
|
---|
112 | . S RISKS=$TR(RISKS," ")
|
---|
113 | . F I=1:1 S TMP=$P(RISKS,",",I) Q:TMP'>0 D
|
---|
114 | . . S RORRISK(TMP)=$G(RORRISK(TMP))+1
|
---|
115 | ;
|
---|
116 | ;--- Date Selected
|
---|
117 | D:$$OPTCOL^RORXU006("SELDT")
|
---|
118 | . S TMP=$$DATE^RORXU002($G(RORBUF(798,IENS,3.2,"I"))\1)
|
---|
119 | . D ADDVAL^RORTSK11(RORTSK,"SELDT",TMP,PTAG,1)
|
---|
120 | . S TMP=$P($$FMTE^XLFDT(TMP,7),"/")
|
---|
121 | . D INCSUM("SELDT",$S(TMP'<RORDTE0:TMP,TMP>0:0,1:""))
|
---|
122 | ;
|
---|
123 | ;--- Date Confirmed
|
---|
124 | D:$$OPTCOL^RORXU006("CONFDT")
|
---|
125 | . S TMP=$$DATE^RORXU002($G(RORBUF(798,IENS,2,"I"))\1)
|
---|
126 | . D ADDVAL^RORTSK11(RORTSK,"CONFDT",TMP,PTAG,1)
|
---|
127 | . S TMP=$P($$FMTE^XLFDT(TMP,7),"/")
|
---|
128 | . D INCSUM("CONFDT",$S(TMP'<RORDTE0:TMP,TMP>0:0,1:""))
|
---|
129 | ;
|
---|
130 | ;--- Utilization
|
---|
131 | D:$$OPTCOL^RORXU006("UTIL")
|
---|
132 | . S TMP=$$UTLCODES($P(UTIL,U,2,999))
|
---|
133 | . D ADDVAL^RORTSK11(RORTSK,"UTIL",TMP,PTAG)
|
---|
134 | ;
|
---|
135 | ;--- Date of Death
|
---|
136 | D:$$OPTCOL^RORXU006("DOD")
|
---|
137 | . S TMP=$$DATE^RORXU002(VADM(6)\1)
|
---|
138 | . D ADDVAL^RORTSK11(RORTSK,"DOD",TMP,PTAG,1)
|
---|
139 | . S TMP=$P($$FMTE^XLFDT(TMP,7),"/")
|
---|
140 | . D INCSUM("DOD",$S(TMP'<RORDTE0:TMP,TMP>0:0,1:""))
|
---|
141 | Q 0
|
---|
142 | ;
|
---|
143 | ;***** GENERATES THE REPORT SUMMARY
|
---|
144 | ;
|
---|
145 | ; PARTAG Reference (IEN) to the parent tag
|
---|
146 | ;
|
---|
147 | ; PATIENTS Reference (IEN) to the PATIENTS tag
|
---|
148 | ;
|
---|
149 | ; Return Values:
|
---|
150 | ; <0 Error code
|
---|
151 | ; 0 Ok
|
---|
152 | ;
|
---|
153 | SUMMARY(PARTAG,PATIENTS) ;
|
---|
154 | N AGE,I,RC,RORBUF,SI,SUMMARY,TABLE,TAG,TMP
|
---|
155 | S SUMMARY=$$ADDVAL^RORTSK11(RORTSK,"SUMMARY",,PARTAG)
|
---|
156 | Q:SUMMARY<0 SUMMARY
|
---|
157 | ;
|
---|
158 | ;--- Risk factors
|
---|
159 | D:$D(RORRISK)>1
|
---|
160 | . K RORBUF D BLD^DIALOG(7980000.016,.RORRISK,,"RORBUF")
|
---|
161 | . D ADDTEXT^RORTSK11(RORTSK,"RISK_FACTORS",.RORBUF,SUMMARY)
|
---|
162 | ;
|
---|
163 | ;--- Simple summaries
|
---|
164 | F SI="RACE","ETHN","SEX" D:$D(RORSUM(SI))>1
|
---|
165 | . S TABLE=$$ADDVAL^RORTSK11(RORTSK,SI_"_SUMMARY",,SUMMARY)
|
---|
166 | . S I=""
|
---|
167 | . F S I=$O(RORSUM(SI,I)) Q:I="" D
|
---|
168 | . . S TAG=$$ADDVAL^RORTSK11(RORTSK,SI,I,TABLE)
|
---|
169 | . . D ADDATTR^RORTSK11(RORTSK,TAG,"COUNT",RORSUM(SI,I))
|
---|
170 | ;
|
---|
171 | ;--- Date summaries
|
---|
172 | F SI="DOB","DOD","CONFDT","SELDT" D:$D(RORSUM(SI))>1
|
---|
173 | . S TABLE=$$ADDVAL^RORTSK11(RORTSK,SI_"_SUMMARY",,SUMMARY)
|
---|
174 | . D:$G(RORSUM(SI,0))>0
|
---|
175 | . . S TAG=$$ADDVAL^RORTSK11(RORTSK,SI,"Before "_RORDTE0,TABLE)
|
---|
176 | . . D ADDATTR^RORTSK11(RORTSK,TAG,"COUNT",RORSUM(SI,0))
|
---|
177 | . S I=0
|
---|
178 | . F S I=$O(RORSUM(SI,I)) Q:I="" D
|
---|
179 | . . S TAG=$$ADDVAL^RORTSK11(RORTSK,SI,I,TABLE)
|
---|
180 | . . D ADDATTR^RORTSK11(RORTSK,TAG,"COUNT",RORSUM(SI,I))
|
---|
181 | ;
|
---|
182 | ;--- Age summary
|
---|
183 | I $G(RORSUM("AGE"))>0 D
|
---|
184 | . ;--- Average age
|
---|
185 | . S TMP=$G(RORSUM("AGE","Average"))/RORSUM("AGE")
|
---|
186 | . S RORSUM("AGE","Average")=$J(TMP,0,2)
|
---|
187 | . ;--- Median age
|
---|
188 | . S TMP=$$XREFNODE^RORTSK10(RORTSK,PATIENTS,"AGE")
|
---|
189 | . S:TMP'="" TMP=$$XREFMDNV^RORXU004(TMP,RORSUM("AGE"))
|
---|
190 | . S RORSUM("AGE","Median")=$S(TMP'="":$J(TMP,0,2),1:"")
|
---|
191 | . ;--- Output the table
|
---|
192 | . S TABLE=$$ADDVAL^RORTSK11(RORTSK,"AGE_SUMMARY",,SUMMARY)
|
---|
193 | . S I=""
|
---|
194 | . F S I=$O(RORSUM("AGE",I)) Q:I="" D
|
---|
195 | . . S TAG=$$ADDVAL^RORTSK11(RORTSK,"AGE",$S(+I=I:I_"+",1:I),TABLE)
|
---|
196 | . . D ADDATTR^RORTSK11(RORTSK,TAG,"COUNT",RORSUM("AGE",I))
|
---|
197 | ;
|
---|
198 | ;--- Utilization codes
|
---|
199 | D:$D(RORUCNT)>1
|
---|
200 | . K RORBUF D BLD^DIALOG(7980000.017,.RORUCNT,,"RORBUF")
|
---|
201 | . D ADDTEXT^RORTSK11(RORTSK,"UTIL_CODES",.RORBUF,SUMMARY)
|
---|
202 | ;---
|
---|
203 | Q 0
|
---|
204 | ;
|
---|
205 | ;***** PROCESSES UTILIZATION CODES
|
---|
206 | UTLCODES(UCSRC) ;
|
---|
207 | N I,UCLST S UCLST=""
|
---|
208 | F I=1:1 S UC=$P(UCSRC,U,I) Q:UC="" D
|
---|
209 | . S UCLST=UCLST_", "_UC,RORUCNT(UC)=$G(RORUCNT(UC))+1
|
---|
210 | Q $P(UCLST,", ",2,999)
|
---|