[613] | 1 | PXRRWLPR ;ISL/PKR - Print the encounter summary report. ;12/1/97
|
---|
| 2 | ;;1.0;PCE PATIENT CARE ENCOUNTER;**20,61**;Aug 12, 1996
|
---|
| 3 | ;
|
---|
| 4 | N BMARG,C1S,C2S,C3S,C1HS,C2HS,C3HS,DONE,HEAD
|
---|
| 5 | N INDENT,PAGE
|
---|
| 6 | N BY,BYCLOC,EMCODE,EMIND,EMMAX,IC,JC,KC
|
---|
| 7 | N FACILITY,FACPNAME,LOCOPRV,NEM,NOCOUNT,NOEM
|
---|
| 8 | N PCL1,PCL2,POV,POVIND,POVMAX,PRVLOC
|
---|
| 9 | N STOIND,STOP,TEMP,TOTCPT,TOTEM,TOTENC
|
---|
| 10 | N VACODE
|
---|
| 11 | ;
|
---|
| 12 | ;These are the variables used to accumulate the totals. We want
|
---|
| 13 | ;totals for each facility and a grand total.
|
---|
| 14 | N FTCON,FTEST,FTINP,FTOTH,FTNEW,FTNOCPT,FTNOEM,FTOP,FTSSN,FTTENC
|
---|
| 15 | N GTCON,GTEST,GTINP,GTNEW,GTNOCPT,GTNOEM,GTOP,GTOTH,GTSSN,GTTENC
|
---|
| 16 | N FTCP,FTSCH,FTTEN,FTTVIS,FTUNS
|
---|
| 17 | N GTCP,GTNS,GTSCH,GTTEN,GTTVIS,GTUNS
|
---|
| 18 | ;
|
---|
| 19 | ;Allow the task to be cleaned up upon successful completion.
|
---|
| 20 | S ZTREQ="@"
|
---|
| 21 | ;Check for multiple provider encounters.
|
---|
| 22 | S:$D(^XTMP(PXRRXTMP,"PXRRMPR")) PXRRMPR=1
|
---|
| 23 | ;
|
---|
| 24 | U IO
|
---|
| 25 | S DONE=0
|
---|
| 26 | ;
|
---|
| 27 | ;See if the report is by location or by provider.
|
---|
| 28 | S BY=$O(^XTMP(PXRRXTMP,"STOIND",""))
|
---|
| 29 | ;
|
---|
| 30 | ;See if the report is by clinic location.
|
---|
| 31 | I $P($G(PXRRLCSC),U,1)["C" S BYCLOC=$S($P(PXRRLCSC,U,3):1,1:0)
|
---|
| 32 | E S BYCLOC=0
|
---|
| 33 | ;
|
---|
| 34 | ;Build a list of the E&M codes. Use the first 3 characters as an
|
---|
| 35 | ;abbreviation.
|
---|
| 36 | D RETSOC^PXRRWLPF(357.69,.05,.EMCODE)
|
---|
| 37 | S EMMAX=0
|
---|
| 38 | S IC=""
|
---|
| 39 | S JC=0
|
---|
| 40 | F S IC=$O(EMCODE(IC)) Q:IC="" D
|
---|
| 41 | . S EMMAX=$$MAX^XLFMTH(EMMAX,$L(EMCODE(IC)))
|
---|
| 42 | . S EMCODE(IC)=EMCODE(IC)_U_$E(EMCODE(IC),1,3)
|
---|
| 43 | . S JC=JC+1
|
---|
| 44 | . S EMIND(JC)=IC
|
---|
| 45 | S NEM=JC
|
---|
| 46 | S EMCODE(0)="TOTAL"_U_"TOTAL"
|
---|
| 47 | ;
|
---|
| 48 | ;Build a list of appointment purposes of visit. Use the first 4
|
---|
| 49 | ;characters as an abbreviation.
|
---|
| 50 | D RETSOC^PXRRWLPF(2.98,9,.POV)
|
---|
| 51 | S POVMAX=15
|
---|
| 52 | S POV(1)=POV(1)_U_$E(POV(1),1,3)
|
---|
| 53 | S POV(2)=POV(2)_U_$E(POV(2),1,5)
|
---|
| 54 | S POV(3)=POV(3)_U_$E(POV(3),1,3)
|
---|
| 55 | S POV(4)=POV(4)_U_$E(POV(4),1,3)
|
---|
| 56 | S POVIND(1)=1
|
---|
| 57 | S POVIND(2)=2
|
---|
| 58 | S POVIND(3)=3
|
---|
| 59 | S POVIND(4)=4
|
---|
| 60 | ;
|
---|
| 61 | ;Setup initial formatting parameters.
|
---|
| 62 | S INDENT=3
|
---|
| 63 | S (HEAD,PAGE)=1
|
---|
| 64 | S BMARG=2
|
---|
| 65 | D HDR^PXRRGPRT(PAGE)
|
---|
| 66 | W !!,"Criteria for Encounter Summary Report"
|
---|
| 67 | I $P(PXRRWLSC,U,1)="L" D OLRCRIT^PXRRGPRT(INDENT)
|
---|
| 68 | I $P($G(PXRRWLSC),U,1)="P" D OPRCRIT^PXRRGPRT(INDENT)
|
---|
| 69 | ;
|
---|
| 70 | ;Give the abbreviations legend.
|
---|
| 71 | S C1S=0
|
---|
| 72 | S C2S=C1S+EMMAX+5
|
---|
| 73 | S C3S=C2S
|
---|
| 74 | W:PXRRMPR=0 !
|
---|
| 75 | W !,?24,"Abbreviations Used in this Report"
|
---|
| 76 | W !,?C1S,"E&M Codes"
|
---|
| 77 | W ?C2S,"Appointment Type"
|
---|
| 78 | W !,?C1S,"---------"
|
---|
| 79 | ;W ?C2S,"------------------"
|
---|
| 80 | ;W ?C3S,"----------------"
|
---|
| 81 | W ?C2S,"----------------"
|
---|
| 82 | S STOP=0
|
---|
| 83 | S IC=$O(EMCODE(0))
|
---|
| 84 | S KC=$O(POV(""))
|
---|
| 85 | F D Q:STOP
|
---|
| 86 | . I $L(IC_KC)=0 S STOP=1 Q
|
---|
| 87 | . E W !
|
---|
| 88 | . I $L(IC)>0 D
|
---|
| 89 | .. W $P(EMCODE(IC),U,2),"=",$P(EMCODE(IC),U,1)
|
---|
| 90 | .. S IC=$O(EMCODE(IC))
|
---|
| 91 | . I $L(KC)>0 D
|
---|
| 92 | .. W ?C2S,$P(POV(KC),U,2),"=",$P(POV(KC),U,1)
|
---|
| 93 | .. S KC=$O(POV(KC))
|
---|
| 94 | W !,"___________________________________________________________________"
|
---|
| 95 | W:PXRRMPR=1 !,"Note: Encounters with multiple providers are counted once in the totals below"
|
---|
| 96 | ;
|
---|
| 97 | ;Setup the final formatting parameters.
|
---|
| 98 | S C1HS=INDENT+3
|
---|
| 99 | S C1S=0
|
---|
| 100 | S C2HS=C1S+2
|
---|
| 101 | S C2S=C2HS
|
---|
| 102 | S C3HS=C2HS+5
|
---|
| 103 | S C3S=C3HS
|
---|
| 104 | S HEAD=1
|
---|
| 105 | S INDENT=0
|
---|
| 106 | ;
|
---|
| 107 | ;Initialize the grand totals.
|
---|
| 108 | S (GTCON,GTEST,GTINP,GTNEW,GTNOCPT,GTNOEM,GTOP,GTOTH,GTSSN,GTTENC)=0
|
---|
| 109 | S (GTCP,GTNS,GTSCH,GTTEN,GTTVIS,GTUNS)=0
|
---|
| 110 | ;
|
---|
| 111 | S NOCOUNT=0
|
---|
| 112 | S FACILITY=0
|
---|
| 113 | NFAC S FACILITY=$O(^XTMP(PXRRXTMP,FACILITY))
|
---|
| 114 | I +FACILITY=0 G DONE
|
---|
| 115 | ;Initialize the facility totals.
|
---|
| 116 | S (FTCON,FTEST,FTINP,FTOTH,FTNEW,FTNOCPT,FTNOEM,FTOP,FTSSN,FTTENC)=0
|
---|
| 117 | S (FTCP,FTSCH,FTTEN,FTUNS)=0
|
---|
| 118 | ;Keep track of the facilities that were found.
|
---|
| 119 | F IC=1:1:NFAC I $P(PXRRFAC(IC),U,1)=FACILITY D Q
|
---|
| 120 | . S $P(PXRRFAC(IC),U,4)="M"
|
---|
| 121 | S FACPNAME=$P(PXRRFACN(FACILITY),U,1)_" "_$P(PXRRFACN(FACILITY),U,2)
|
---|
| 122 | ;
|
---|
| 123 | S STOIND="&&"
|
---|
| 124 | NSTO S STOIND=$O(^XTMP(PXRRXTMP,FACILITY,STOIND))
|
---|
| 125 | I STOIND="" D G NFAC
|
---|
| 126 | . S FTSSN=+$G(^XTMP(PXRRXTMP,FACILITY,"&","TOTUNIQ"))
|
---|
| 127 | . S FTINP=+$G(^XTMP(PXRRXTMP,FACILITY,"&","TOTINOUT",1))
|
---|
| 128 | . S FTOP=+$G(^XTMP(PXRRXTMP,FACILITY,"&","TOTINOUT",0))
|
---|
| 129 | . S FTTVIS=+$G(^XTMP(PXRRXTMP,FACILITY,"&","TOTVIS"))
|
---|
| 130 | . ;Subtract multiple provider encounters from facility total
|
---|
| 131 | . I PXRRMPR=1 D NCSUB
|
---|
| 132 | . D WFACTOT^PXRRWLPF
|
---|
| 133 | . D GTOTAL^PXRRWLPF
|
---|
| 134 | D HEAD^PXRRWLPF(0)
|
---|
| 135 | I DONE G DONE
|
---|
| 136 | I '$D(PXRRPRLL) S PXRRPRLL=0
|
---|
| 137 | S LOCOPRV=" "
|
---|
| 138 | I BY="LOCATION" D
|
---|
| 139 | . S LOCOPRV=$P(STOIND,U,1)_" ("_$P(STOIND,U,3)_")"
|
---|
| 140 | . S NOCOUNT=0
|
---|
| 141 | . S INDENT=0
|
---|
| 142 | .;If we have clinic stops split out by clinic location do not include
|
---|
| 143 | .;the individual locations in the totals.
|
---|
| 144 | . I (BYCLOC)&($L(STOIND,U)=4) D
|
---|
| 145 | .. S LOCOPRV=$P(STOIND,U,4)_" ("_$P(STOIND,U,3)_")"
|
---|
| 146 | .. S NOCOUNT=1
|
---|
| 147 | .. S INDENT=2
|
---|
| 148 | I BY="PROVIDER" D
|
---|
| 149 | . S VACODE=$P(STOIND,U,3)
|
---|
| 150 | . S TEMP=$$ABBRV^PXRRPECU(VACODE)
|
---|
| 151 | . K PCL1,PCL2
|
---|
| 152 | . D FMTPCL^PXRRPRSP(TEMP,$L($P(STOIND,U,1))+1,80,.PCL1,.PCL2)
|
---|
| 153 | . S LOCOPRV=$P(STOIND,U,1)_" "_PCL1
|
---|
| 154 | . I PXRRPRLL S PRVLOC=$P(STOIND,U,4)_" ("_$P(STOIND,U,6)_")"
|
---|
| 155 | ;
|
---|
| 156 | ;Write out the PCE encounter data.
|
---|
| 157 | S TOTCPT=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"CPT"))
|
---|
| 158 | S TOTENC=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"TOTENC"))
|
---|
| 159 | S NOEM=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"EM",0))
|
---|
| 160 | I $Y>(IOSL-BMARG-5) D HEAD^PXRRWLPF(1)
|
---|
| 161 | I DONE G DONE
|
---|
| 162 | W !!,?INDENT,LOCOPRV
|
---|
| 163 | I PXRRPRLL W !,?C1HS,PRVLOC
|
---|
| 164 | I $D(PCL2) W !," ",PCL2
|
---|
| 165 | W !,?C2HS,"PCE:"
|
---|
| 166 | S TOTEM=0
|
---|
| 167 | ;E&M new.
|
---|
| 168 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"EM",EMIND(1)))
|
---|
| 169 | W ?C3S,$J(TEMP,6)
|
---|
| 170 | D NCSUM(.FTNEW,TEMP,NOCOUNT)
|
---|
| 171 | D NCSUM(.TOTEM,TEMP,NOCOUNT)
|
---|
| 172 | ;E&M established.
|
---|
| 173 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"EM",EMIND(2)))
|
---|
| 174 | W $J(TEMP,6)
|
---|
| 175 | D NCSUM(.FTEST,TEMP,NOCOUNT)
|
---|
| 176 | D NCSUM(.TOTEM,TEMP,NOCOUNT)
|
---|
| 177 | ;E&M consult.
|
---|
| 178 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"EM",EMIND(3)))
|
---|
| 179 | W $J(TEMP,6)
|
---|
| 180 | D NCSUM(.FTCON,TEMP,NOCOUNT)
|
---|
| 181 | D NCSUM(.TOTEM,TEMP,NOCOUNT)
|
---|
| 182 | ;E&M other
|
---|
| 183 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"EM",EMIND(4)))
|
---|
| 184 | W $J(TEMP,6)
|
---|
| 185 | D NCSUM(.FTOTH,TEMP,NOCOUNT)
|
---|
| 186 | D NCSUM(.TOTEM,TEMP,NOCOUNT)
|
---|
| 187 | W $J(NOEM,6)
|
---|
| 188 | D NCSUM(.FTNOEM,NOEM,NOCOUNT)
|
---|
| 189 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"NOCPT"))
|
---|
| 190 | W $J(TEMP,6)
|
---|
| 191 | D NCSUM(.FTNOCPT,TEMP,NOCOUNT)
|
---|
| 192 | W $J(TOTENC,7)
|
---|
| 193 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"TOTVIS"))
|
---|
| 194 | W $J(TEMP,6)
|
---|
| 195 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"UPAT"))
|
---|
| 196 | W $J(TEMP,6)
|
---|
| 197 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"VISITS",1))
|
---|
| 198 | W $J(TEMP,6)
|
---|
| 199 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"VISITS",0))
|
---|
| 200 | W $J(TEMP,6)
|
---|
| 201 | ;
|
---|
| 202 | D NCSUM(.FTTENC,TOTENC,NOCOUNT)
|
---|
| 203 | ;
|
---|
| 204 | ;Write the appointment info.
|
---|
| 205 | W !,?C2HS F IC=C2HS+1:1:80 W "-"
|
---|
| 206 | W !,?C2HS,"SCH:"
|
---|
| 207 | ;Purpose of Visit C&P.
|
---|
| 208 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"POV",POVIND(1)))
|
---|
| 209 | W ?C3S,$J(TEMP,6)
|
---|
| 210 | D NCSUM(.FTCP,TEMP,NOCOUNT)
|
---|
| 211 | ;Purpose of Visit 10-10.
|
---|
| 212 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"POV",POVIND(2)))
|
---|
| 213 | W $J(TEMP,6)
|
---|
| 214 | D NCSUM(.FTTEN,TEMP,NOCOUNT)
|
---|
| 215 | ;Purpose of Visit scheduled.
|
---|
| 216 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"POV",POVIND(3)))
|
---|
| 217 | W $J(TEMP,6)
|
---|
| 218 | D NCSUM(.FTSCH,TEMP,NOCOUNT)
|
---|
| 219 | ;Purpose of Visit unscheduled.
|
---|
| 220 | S TEMP=+$G(^XTMP(PXRRXTMP,FACILITY,STOIND,"POV",POVIND(4)))
|
---|
| 221 | W $J(TEMP,6)
|
---|
| 222 | D NCSUM(.FTUNS,TEMP,NOCOUNT)
|
---|
| 223 | ;
|
---|
| 224 | G NSTO
|
---|
| 225 | DONE ;
|
---|
| 226 | I DONE G EXIT
|
---|
| 227 | I $Y>(IOSL-BMARG-3) D PAGE^PXRRGPRT
|
---|
| 228 | I DONE G EXIT
|
---|
| 229 | I GTTENC>0 D WGTOTAL^PXRRWLPF
|
---|
| 230 | I $Y>(IOSL-BMARG-3) D PAGE^PXRRGPRT
|
---|
| 231 | I DONE G EXIT
|
---|
| 232 | D FACNE^PXRRGPRT(INDENT)
|
---|
| 233 | EXIT ;
|
---|
| 234 | ;Clean up
|
---|
| 235 | D EXIT^PXRRGUT
|
---|
| 236 | D EOR^PXRRGUT
|
---|
| 237 | Q
|
---|
| 238 | ;
|
---|
| 239 | ;=======================================================================
|
---|
| 240 | NCSUM(VAR,ADD,NOCOUNT) ;No Count summation function. Only add to VAR if
|
---|
| 241 | ; NOCOUNT is false.
|
---|
| 242 | I NOCOUNT Q
|
---|
| 243 | S VAR=VAR+ADD
|
---|
| 244 | Q
|
---|
| 245 | ;
|
---|
| 246 | NCSUB ;Subtract multiple provider totals from facility totals
|
---|
| 247 | ;Totals are built in PXRRWLS2,PXRRWLSE and PXRRWLSA
|
---|
| 248 | N FTFLDS,FTFLD,FTEMP
|
---|
| 249 | ;E&M codes
|
---|
| 250 | S EMIND(0)=0
|
---|
| 251 | S FTFLDS="FTNOEM;FTNEW;FTEST;FTCON;FTOTH"
|
---|
| 252 | F JJ=0:1:4 D
|
---|
| 253 | . S FTFLD=$P(FTFLDS,";",JJ+1)
|
---|
| 254 | . S FTEMP=+$G(^XTMP(PXRRXTMP,FACILITY,"&&","EM",EMIND(JJ)))
|
---|
| 255 | . S @FTFLD=@FTFLD-FTEMP
|
---|
| 256 | ;Purpose of visit codes
|
---|
| 257 | S FTFLDS="FTCP;FTTEN;FTSCH;FTUNS"
|
---|
| 258 | F JJ=1:1:4 D
|
---|
| 259 | . S FTFLD=$P(FTFLDS,";",JJ)
|
---|
| 260 | . S FTEMP=+$G(^XTMP(PXRRXTMP,FACILITY,"&&","POV",POVIND(JJ)))
|
---|
| 261 | . S @FTFLD=@FTFLD-FTEMP
|
---|
| 262 | ;Miscellaneous
|
---|
| 263 | S FTEMP=+$G(^XTMP(PXRRXTMP,FACILITY,"&&","TOTENC"))
|
---|
| 264 | S FTTENC=FTTENC-FTEMP
|
---|
| 265 | S FTEMP=+$G(^XTMP(PXRRXTMP,FACILITY,"&&","NOCPT"))
|
---|
| 266 | S FTNOCPT=FTNOCPT-FTEMP
|
---|
| 267 | Q
|
---|