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