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