| 1 | PXRRFDP ;ISL/PKR - Final sort and print of frequency of diagnosis report. ;9/5/97
 | 
|---|
| 2 |  ;;1.0;PCE PATIENT CARE ENCOUNTER;**3,10,12,18,31,121**;Aug 12, 1996
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | PRINT ;
 | 
|---|
| 5 |  N ANS,BD,BMARG,C1E,C1S,C2E,C2S,C3E,C3S,C1HS,C2HS,C3HS,CMAX,INDENT,MID
 | 
|---|
| 6 |  N HEAD,LEN,NUM,PAGE
 | 
|---|
| 7 |  N BYLOC,BYPC,BYPRV,DCIEN,DONE,DTOT,ED,ETOT,FOUND,HLOC,IC,ICD9IEN
 | 
|---|
| 8 |  N FACILITY,FACPNAME,IC,INFOTYPE,LOCPNAM,NEWPAGE,PCLASS,PRV
 | 
|---|
| 9 |  N RATIO,STOIND,TEMP,TOTAL,VACODE,ICDSTR
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;Allow the task to be cleaned up upon successful completion.
 | 
|---|
| 12 |  S ZTREQ="@"
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  U IO
 | 
|---|
| 15 |  S BMARG=2
 | 
|---|
| 16 |  S INDENT=3,PAGE=1,C1S=INDENT+29
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  S DONE=0
 | 
|---|
| 19 |  D HDR^PXRRGPRT(PAGE)
 | 
|---|
| 20 |  W !!,"Criteria for Frequency of Diagnoses Report"
 | 
|---|
| 21 |  W !,?INDENT,"Encounter diagnoses:",?C1S,$P(PXRRFDDC,U,2)
 | 
|---|
| 22 |  S BD=$$FMTE^XLFDT(PXRRBDT)
 | 
|---|
| 23 |  S ED=$$FMTE^XLFDT(PXRREDT)
 | 
|---|
| 24 |  W !,?INDENT,"Encounter date range:",?C1S,BD," through ",ED
 | 
|---|
| 25 |  I PXRRECAT="" D  G MAXP
 | 
|---|
| 26 |  . W !,?INDENT,"Selected encounters:",?C1S,"ALL"
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  I $D(PXRRPRSC) W !,?INDENT,"Selected Providers:",?C1S,$P(PXRRPRSC,U,2)
 | 
|---|
| 29 |  I $D(PXRRCS) S ANS="YES"
 | 
|---|
| 30 |  E  S ANS="ALL"
 | 
|---|
| 31 |  I $D(PXRRLCSC) W !,?INDENT,$P(PXRRLCSC,U,2)
 | 
|---|
| 32 |  I $D(PXRRETYP) W !,?INDENT,"Encounter type:",?C1S,PXRRETYP
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  I $D(PXRRDOB) D
 | 
|---|
| 35 |  . I (PXRRDOBE'=DT)&(PXRRDOBS'=0) D
 | 
|---|
| 36 |  .. W !,?INDENT,"Patient age range:",?C1S,PXRRMINA," to ",PXRRMAXA
 | 
|---|
| 37 |  .. S BD=$$FMTE^XLFDT(PXRRDOBS),ED=$$FMTE^XLFDT(PXRRDOBE)
 | 
|---|
| 38 |  .. W !,?INDENT,"Patient date of birth:",?C1S,BD," through ",ED
 | 
|---|
| 39 |  . I (PXRRDOBS=0) D
 | 
|---|
| 40 |  .. W !,?INDENT,"Patient age range:",?C1S,PXRRMINA," or more"
 | 
|---|
| 41 |  .. S ED=$$FMTE^XLFDT(PXRRDOBE)
 | 
|---|
| 42 |  .. W !,?INDENT,"Patient date of birth:",?C1S,ED," or before"
 | 
|---|
| 43 |  . I (PXRRDOBE=DT) D
 | 
|---|
| 44 |  .. W !,?INDENT,"Patient age range:",?C1S,"Up to ",PXRRMAXA
 | 
|---|
| 45 |  .. S BD=$$FMTE^XLFDT(PXRRDOBS),ED=$$FMTE^XLFDT(DT)
 | 
|---|
| 46 |  .. W !,?INDENT,"Patient date of birth:",?C1S,BD," through ",ED
 | 
|---|
| 47 |  E  W !,?INDENT,"Patient age range:",?C1S,"ALL"
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  I $D(PXRRRACE) D
 | 
|---|
| 50 |  . N RACE
 | 
|---|
| 51 |  . S RACE="race"
 | 
|---|
| 52 |  . I NRACE>1 S RACE="races"
 | 
|---|
| 53 |  . W !?INDENT,"Patient ",RACE,":",?C1S,$P(PXRRRACE(1),U,2)
 | 
|---|
| 54 |  . F IC=2:1:NRACE W !,?C1S,$P(PXRRRACE(IC),U,2)
 | 
|---|
| 55 |  E  W !?INDENT,"Patient race(s):",?C1S,"ALL"
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  I $D(PXRRSEX) W !?INDENT,"Patient sex:",?C1S,$P(PXRRSEX,U,2)
 | 
|---|
| 58 |  E  W !?INDENT,"Patient sex:",?C1S,"BOTH"
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  I $D(PXRRSCAT) D OSCAT^PXRRGPRT(PXRRSCAT,INDENT)
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  I $P($G(PXRRPRSC),U,1)="C" D PECLASS^PXRRGPRT(INDENT)
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | MAXP W !!,?INDENT,"Maximum number of diagnoses to be displayed: ",PXRRDMAX
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  S CMAX=70
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  I $D(PXRRLCSC) D
 | 
|---|
| 69 |  . I PXRRLCSC["C" S PLOCNAM="Clinic Stop: "
 | 
|---|
| 70 |  . I PXRRLCSC["H" S PLOCNAM="Hospital Location: "
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  S FACILITY=""
 | 
|---|
| 73 | NFAC S INFOTYPE="FACILITY"
 | 
|---|
| 74 |  S FACILITY=$O(^XTMP(PXRRXTMP,"INFO",INFOTYPE,FACILITY))
 | 
|---|
| 75 |  I +FACILITY=0 G END
 | 
|---|
| 76 |  ;Mark the facility as being found.
 | 
|---|
| 77 |  F IC=1:1:NFAC I $P(PXRRFAC(IC),U,1)=FACILITY D  Q
 | 
|---|
| 78 |  . S $P(PXRRFAC(IC),U,4)="M"
 | 
|---|
| 79 |  S FACPNAME=$P(PXRRFACN(FACILITY),U,1)_"  "_$P(PXRRFACN(FACILITY),U,2)
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ;Check for a user request to stop the task.
 | 
|---|
| 82 |  I $$S^%ZTLOAD S ZTSTOP=1 D EXIT^PXRRFDD
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | NINFO S INFOTYPE=$O(^XTMP(PXRRXTMP,"INFO",INFOTYPE))
 | 
|---|
| 85 |  I INFOTYPE="" G NFAC
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  I INFOTYPE["LOC" S BYLOC=1
 | 
|---|
| 88 |  E  S BYLOC=0
 | 
|---|
| 89 |  I INFOTYPE["PC" S BYPC=1
 | 
|---|
| 90 |  E  S BYPC=0
 | 
|---|
| 91 |  I INFOTYPE["PRV" S BYPRV=1
 | 
|---|
| 92 |  E  S BYPRV=0
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  S PRV=""
 | 
|---|
| 95 | NPRV ;
 | 
|---|
| 96 |  S PRV=$O(^XTMP(PXRRXTMP,"INFO",INFOTYPE,FACILITY,PRV))
 | 
|---|
| 97 |  I PRV="" G NINFO
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  S VACODE=""
 | 
|---|
| 100 | NVACODE ;
 | 
|---|
| 101 |  S VACODE=$O(^XTMP(PXRRXTMP,"INFO",INFOTYPE,FACILITY,PRV,VACODE))
 | 
|---|
| 102 |  I VACODE="" G NPRV
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  S HLOC=""
 | 
|---|
| 105 | NLOC ;
 | 
|---|
| 106 |  S HLOC=$O(^XTMP(PXRRXTMP,"INFO",INFOTYPE,FACILITY,PRV,VACODE,HLOC))
 | 
|---|
| 107 |  I HLOC="" G NVACODE
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  S STOIND=^XTMP(PXRRXTMP,"INFO",INFOTYPE,FACILITY,PRV,VACODE,HLOC)
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ;If the report is by provider get a person class for the provider.
 | 
|---|
| 112 |  I BYPRV D
 | 
|---|
| 113 |  . S TEMP=$P(PRV,U,4)
 | 
|---|
| 114 |  . I $L(TEMP)>0 S PCLASS=$$ABBRV^PXRRPECU(TEMP)
 | 
|---|
| 115 |  . E  S PCLASS="Unknown"
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ;If the report is by person class get the person class.
 | 
|---|
| 118 |  I BYPC D
 | 
|---|
| 119 |  . S PCLASS=$$ABBRV^PXRRPECU(VACODE)
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  S HEAD=1
 | 
|---|
| 122 |  D HEAD(0)
 | 
|---|
| 123 |  I DONE G EXIT
 | 
|---|
| 124 |  S C1S=INDENT+60
 | 
|---|
| 125 |  I $Y>(IOSL-BMARG-4) D HEAD(1)
 | 
|---|
| 126 |  I DONE G EXIT
 | 
|---|
| 127 |  I $P(PXRRFDDC,U,1)="P" S TEMP="Total number of Primary Diagnoses for these Encounters:"
 | 
|---|
| 128 |  E  S TEMP="Total number of Diagnoses for these Encounters:"
 | 
|---|
| 129 |  I $D(^XTMP(PXRRXTMP,"TOTALS","ENCTOT",STOIND)) S ETOT=^XTMP(PXRRXTMP,"TOTALS","ENCTOT",STOIND)
 | 
|---|
| 130 |  E  S ETOT=0
 | 
|---|
| 131 |  I $D(^XTMP(PXRRXTMP,"TOTALS","DIAGTOT",STOIND)) S DTOT=^XTMP(PXRRXTMP,"TOTALS","DIAGTOT",STOIND)
 | 
|---|
| 132 |  E  S DTOT=0
 | 
|---|
| 133 |  S LEN=$$MAX^XLFMTH($L(DTOT),$L(ETOT))
 | 
|---|
| 134 |  W !!,?INDENT,"Total number of Encounters meeting the selection criteria:",?C1S,$J(ETOT,LEN)
 | 
|---|
| 135 |  W !,?INDENT,TEMP,?C1S,$J(DTOT,LEN)
 | 
|---|
| 136 |  S RATIO=$S(ETOT>0:(DTOT/ETOT),1:0)
 | 
|---|
| 137 |  W !,?INDENT,"Diagnoses/Encounter ratio:",?C1S,$J(RATIO,LEN,2)
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  S C1S=INDENT+8,C2S=INDENT+16,C2E=INDENT+46
 | 
|---|
| 140 |  S C1HS=INDENT+9,C2HS=INDENT+25
 | 
|---|
| 141 |  S TOTAL=""
 | 
|---|
| 142 |  S NUM=0
 | 
|---|
| 143 | NTOTICD S TOTAL=$O(^XTMP(PXRRXTMP,"PRINT",STOIND,"ICD9",TOTAL),-1)
 | 
|---|
| 144 |  I TOTAL="" G DIAGCAT
 | 
|---|
| 145 |  S TEMP=TOTAL
 | 
|---|
| 146 |  S ICD9IEN=""
 | 
|---|
| 147 | NICD9 S ICD9IEN=$O(^XTMP(PXRRXTMP,"PRINT",STOIND,"ICD9",TOTAL,ICD9IEN),-1)
 | 
|---|
| 148 |  I ICD9IEN="" G NTOTICD
 | 
|---|
| 149 |  S NUM=NUM+1
 | 
|---|
| 150 |  I NUM=1 S HEAD=1
 | 
|---|
| 151 |  I $Y>(IOSL-BMARG-5) S NEWPAGE=1
 | 
|---|
| 152 |  E  S NEWPAGE=0
 | 
|---|
| 153 |  D DHEAD(NEWPAGE)
 | 
|---|
| 154 |  I DONE G EXIT
 | 
|---|
| 155 |  S C3S=C3E-$L(TEMP)
 | 
|---|
| 156 |  ;W !,?INDENT,$J(NUM,5),".",?C1S,$P(^ICD9(ICD9IEN,0),U,1),?C2S,$P(^ICD9(ICD9IEN,0),U,3),?C3S,TEMP
 | 
|---|
| 157 |  S ICDSTR=$$ICDDX^ICDCODE(ICD9IEN)
 | 
|---|
| 158 |  W !,?INDENT,$J(NUM,5),".",?C1S,$P(ICDSTR,U,2),?C2S,$P(ICDSTR,U,4),?C3S,TEMP
 | 
|---|
| 159 |  I NUM<PXRRDMAX G NICD9
 | 
|---|
| 160 | DIAGCAT ;
 | 
|---|
| 161 |  S C1S=INDENT+8,C1E=INDENT+38
 | 
|---|
| 162 |  S C1HS=14
 | 
|---|
| 163 |  S TOTAL=""
 | 
|---|
| 164 |  S NUM=0
 | 
|---|
| 165 | NTOTDC S TOTAL=$O(^XTMP(PXRRXTMP,"PRINT",STOIND,"DC",TOTAL),-1)
 | 
|---|
| 166 |  I TOTAL="" G NLOC
 | 
|---|
| 167 |  S TEMP=TOTAL
 | 
|---|
| 168 |  S DCIEN=""
 | 
|---|
| 169 | NDC S DCIEN=$O(^XTMP(PXRRXTMP,"PRINT",STOIND,"DC",TOTAL,DCIEN),-1)
 | 
|---|
| 170 |  I DCIEN="" G NTOTDC
 | 
|---|
| 171 |  S NUM=NUM+1
 | 
|---|
| 172 |  I NUM=1 S HEAD=1
 | 
|---|
| 173 |  I $Y>(IOSL-BMARG-5) S NEWPAGE=1
 | 
|---|
| 174 |  E  S NEWPAGE=0
 | 
|---|
| 175 |  D DCHEAD(NEWPAGE)
 | 
|---|
| 176 |  I DONE G EXIT
 | 
|---|
| 177 |  S C2S=C2E-$L(TEMP)
 | 
|---|
| 178 |  ;We will need a DBIA to read ICM.  Some sites have had a corrupted ICM
 | 
|---|
| 179 |  ;file.  Check for this problem, if found print an error message and
 | 
|---|
| 180 |  ;quit.
 | 
|---|
| 181 |  I (DCIEN>0)&('$D(^ICM(DCIEN,0))) D  G EXIT
 | 
|---|
| 182 |  . W !!,"CANNOT CONTINUE, File 80.3 Major Diagnostic Category is corrupted!"
 | 
|---|
| 183 |  . W !,"^ICM(",DCIEN,",0) is missing."
 | 
|---|
| 184 |  . W !,"Please contact customer service for help."
 | 
|---|
| 185 |  I DCIEN>0 W !,?INDENT,$J(NUM,5),".",?C1S,$P(^ICM(DCIEN,0),U,1),?C2S,TEMP
 | 
|---|
| 186 |  E  W !,?INDENT,$J(NUM,5),".",?C1S,"Unknown",?C2S,TEMP
 | 
|---|
| 187 |  I NUM<PXRRDMAX G NDC
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 |  ;Get the next location.
 | 
|---|
| 190 |  G NLOC
 | 
|---|
| 191 | END ;
 | 
|---|
| 192 |  ;Check for facilities that were listed but had no encounters.
 | 
|---|
| 193 |  D FACNE^PXRRGPRT(INDENT)
 | 
|---|
| 194 | EXIT ;
 | 
|---|
| 195 |  D EXIT^PXRRGUT
 | 
|---|
| 196 |  D EOR^PXRRGUT
 | 
|---|
| 197 |  Q
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  ;=======================================================================
 | 
|---|
| 200 | DHEAD(NEWPAGE) ;
 | 
|---|
| 201 |  I NEWPAGE D PAGE^PXRRGPRT
 | 
|---|
| 202 |  E  I $Y>(IOSL-BMARG) D PAGE^PXRRGPRT
 | 
|---|
| 203 |  I DONE Q
 | 
|---|
| 204 |  I (HEAD)&(RATIO>0) D
 | 
|---|
| 205 |  . S LEN=$$MAX^XLFMTH(9,$L(TEMP))
 | 
|---|
| 206 |  . S MID=C2E+3+(LEN/2)
 | 
|---|
| 207 |  . S C3HS=MID-5
 | 
|---|
| 208 |  . S C3E=MID+($L(TEMP)/2)
 | 
|---|
| 209 |  . W !!,?INDENT,PXRRDMAX," Most Frequent ICD Diagnoses:"
 | 
|---|
| 210 |  . W !,?C1HS,"Code",?C2HS,"Description",?C3HS,"Frequency"
 | 
|---|
| 211 |  . W !,?C1S,"------",?C2S,"------------------------------",?C3HS,"---------"
 | 
|---|
| 212 |  . S HEAD=0
 | 
|---|
| 213 |  Q
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 |  ;=======================================================================
 | 
|---|
| 216 | DCHEAD(NEWPAGE) ;
 | 
|---|
| 217 |  I NEWPAGE D PAGE^PXRRGPRT
 | 
|---|
| 218 |  E  I $Y>(IOSL-BMARG) D PAGE^PXRRGPRT
 | 
|---|
| 219 |  I DONE Q
 | 
|---|
| 220 |  I (HEAD)&(RATIO>0) D
 | 
|---|
| 221 |  . S LEN=$$MAX^XLFMTH(9,$L(TEMP))
 | 
|---|
| 222 |  . S MID=C1E+3+(LEN/2)
 | 
|---|
| 223 |  . S C2HS=MID-5
 | 
|---|
| 224 |  . S C2E=MID+($L(TEMP)/2)
 | 
|---|
| 225 |  . W !!,?INDENT,PXRRDMAX," Most Frequent Diagnostic Categories:"
 | 
|---|
| 226 |  . W !,?C1HS,"Diagnostic Category",?C2HS,"Frequency"
 | 
|---|
| 227 |  . W !,?C1S,"------------------------------",?C2HS,"---------"
 | 
|---|
| 228 |  . S HEAD=0
 | 
|---|
| 229 |  Q
 | 
|---|
| 230 |  ;
 | 
|---|
| 231 |  ;=======================================================================
 | 
|---|
| 232 | HEAD(NEWPAGE) ;
 | 
|---|
| 233 |  N LEN,TEMP
 | 
|---|
| 234 |  I NEWPAGE D PAGE^PXRRGPRT
 | 
|---|
| 235 |  E  I $Y>(IOSL-BMARG-8) D PAGE^PXRRGPRT
 | 
|---|
| 236 |  I DONE Q
 | 
|---|
| 237 |  I HEAD D
 | 
|---|
| 238 |  . W !!,"___________________________________________________________________"
 | 
|---|
| 239 |  . W !,"Facility: ",FACPNAME
 | 
|---|
| 240 |  . I BYLOC W !,PLOCNAM,$P(HLOC,U,1)_" (",$P(HLOC,U,3)_")"
 | 
|---|
| 241 |  . I BYPRV D
 | 
|---|
| 242 |  .. S TEMP="Provider: "_$P(PRV,U,1)_" ("_PCLASS_")"
 | 
|---|
| 243 |  .. S LEN=$L(TEMP)
 | 
|---|
| 244 |  .. I LEN>CMAX D
 | 
|---|
| 245 |  ... W !,$E(TEMP,1,CMAX)
 | 
|---|
| 246 |  ... W !," ",$E(TEMP,CMAX+1,LEN)
 | 
|---|
| 247 |  .. E  W !,TEMP
 | 
|---|
| 248 |  . I BYPC D
 | 
|---|
| 249 |  .. W !,"Person Class (Occupation+Specialty+Subspecialty): "
 | 
|---|
| 250 |  .. S LEN=INDENT+$L(PCLASS)
 | 
|---|
| 251 |  .. I LEN>CMAX D
 | 
|---|
| 252 |  ... W !,?INDENT,$E(PCLASS,1,CMAX)
 | 
|---|
| 253 |  ... W !,?(INDENT+1),$E(PCLASS,CMAX+1,LEN)
 | 
|---|
| 254 |  .. E  W !,?INDENT,PCLASS
 | 
|---|
| 255 |  . S HEAD=0
 | 
|---|
| 256 |  Q
 | 
|---|
| 257 |  ;
 | 
|---|