[613] | 1 | DGPTFRU1 ; ALB/SCK - PTF RECORDS CLOSEOUT RPT FOR MT INDICATOR = U ; 21 JULY 2003
|
---|
| 2 | ;;5.3;Registration;**537**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | EN ; Main entry point for report
|
---|
| 5 | N DIR,DIRUT,DGBEG,DGEND,RSLT,Y,X
|
---|
| 6 | ;
|
---|
| 7 | S DIR("A")="Please Select Date Range for patient discharges",DIR(0)="SM^A:Previous Fiscal Year;B:Current Fiscal Year;O:Other Date Range"
|
---|
| 8 | S DIR("B")="B"
|
---|
| 9 | S DIR("?")="You may select either the previous fiscal year (A) or the current fiscal year (B) for the date range. Select (O) if you choose to specify your own date range."
|
---|
| 10 | D ^DIR K DIR
|
---|
| 11 | Q:$D(DIRUT)
|
---|
| 12 | S RSLT=Y
|
---|
| 13 | ;
|
---|
| 14 | I RSLT="A" D
|
---|
| 15 | . D PASTYR(.DGBEG,.DGEND)
|
---|
| 16 | E I RSLT="B" D
|
---|
| 17 | . D CURYR(.DGBEG,.DGEND)
|
---|
| 18 | E D
|
---|
| 19 | . D GETDT(.DGBEG,.DGEND)
|
---|
| 20 | Q:'$G(DGBEG)!('$G(DGEND))
|
---|
| 21 | W !!?3,"Date Range: "_$$FMTE^XLFDT(DGBEG)_" to "_$$FMTE^XLFDT(DGEND)
|
---|
| 22 | ;
|
---|
| 23 | N X,Y,IORVON,IORVOFF
|
---|
| 24 | S X="IORVON;IORVOFF"
|
---|
| 25 | D ENDR^%ZISS
|
---|
| 26 | W:$D(IORVON) IORVON
|
---|
| 27 | W !,"A 132-Column printer is required for this report."
|
---|
| 28 | W !,"This report will NOT print correctly to the screen!"
|
---|
| 29 | W:$D(IORVOFF) IORVOFF
|
---|
| 30 | ;
|
---|
| 31 | N ZTSAVE,ZTRTN,ZTDESC,POP,%ZIS,ZTQUEUED
|
---|
| 32 | S %ZIS="Q" D ^%ZIS G:POP EXIT
|
---|
| 33 | I $D(IO("Q")) D Q
|
---|
| 34 | . S ZTSAVE("DGBEG")="",ZTSAVE("DGEND")="",ZTSAVE("DUZ")=""
|
---|
| 35 | . S ZTRTN="RUN^DGPTFRU1"
|
---|
| 36 | . S ZTDESC="PTF CLOSEOUT MT=U RPT"
|
---|
| 37 | . D ^%ZTLOAD D HOME^%ZIS K IO("Q")
|
---|
| 38 | D RUN
|
---|
| 39 | D ^%ZISC
|
---|
| 40 | EXIT S:$D(ZTQUEUED) ZTREQ="@" Q
|
---|
| 41 | ;
|
---|
| 42 | RUN ; Run report
|
---|
| 43 | U IO
|
---|
| 44 | K ^TMP("DGPTFRU",$J),^TMP("DGPTFRUS",$J)
|
---|
| 45 | ;
|
---|
| 46 | D BLD(DGBEG,DGEND)
|
---|
| 47 | D CHKMT
|
---|
| 48 | D SRTNAME
|
---|
| 49 | D PRINT
|
---|
| 50 | D MAIL
|
---|
| 51 | K ^TMP("DGPTFRU",$J),^TMP("DGPTFRUS",$J)
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | PASTYR(DGBEG,DGEND) ; Set dates for previous fiscal year
|
---|
| 55 | N CURYR,PRVYR,CURMN,%I
|
---|
| 56 | ;
|
---|
| 57 | ; Input/Output - See GETDT
|
---|
| 58 | ;
|
---|
| 59 | D NOW^%DTC
|
---|
| 60 | S CURYR=%I(3),CURMN=%I(1)
|
---|
| 61 | I CURMN>9 D
|
---|
| 62 | . S CURYR=CURYR+1
|
---|
| 63 | S PRVYR=CURYR-1
|
---|
| 64 | S DGEND=$$FMADD^XLFDT(PRVYR_"1001",-1)
|
---|
| 65 | S DGBEG=$$FMADD^XLFDT(PRVYR_"1001",-365)
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | CURYR(DGBEG,DGEND) ; Set dates for current fiscal year
|
---|
| 69 | N CURYR,CURMN,%I
|
---|
| 70 | ;
|
---|
| 71 | ; Input/Output - See GETDT
|
---|
| 72 | ;
|
---|
| 73 | D NOW^%DTC
|
---|
| 74 | S CURYR=%I(3),CURMN=%I(1)
|
---|
| 75 | I CURMN<10 D
|
---|
| 76 | . S CURYR=CURYR-1
|
---|
| 77 | S DGBEG=CURYR_"1001"
|
---|
| 78 | S DGEND=$P($$NOW^XLFDT,".")
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | GETDT(DGBEG,DGEND) ; Get beginning and ending date for search
|
---|
| 82 | ; Output DGBEG Beginning for date range, passed in by reference
|
---|
| 83 | ; DGEND End of date range, passed in by reference
|
---|
| 84 | ; result 1 - If function successful
|
---|
| 85 | ; 0 - If function NOT successful (User quit)
|
---|
| 86 | ;
|
---|
| 87 | N DIR,DIRUT,Y
|
---|
| 88 | ;
|
---|
| 89 | W !!?3,"You have selected to specify your own date range. Please note that by"
|
---|
| 90 | W !?3,"doing so you may not generate an accurate picture of the transmitted PTF"
|
---|
| 91 | W !?3,"closeouts where the means test indicator equals 'U'.",!
|
---|
| 92 | ;
|
---|
| 93 | S DIR(0)="DAO^:DT:EX"
|
---|
| 94 | S DIR("A")="Beginning Date: "
|
---|
| 95 | S DIR("?")="^D HELP^%DTC"
|
---|
| 96 | D ^DIR
|
---|
| 97 | I $D(DIRUT) D Q
|
---|
| 98 | . S DGBEG=0
|
---|
| 99 | S DGBEG=Y
|
---|
| 100 | ;
|
---|
| 101 | S DIR(0)="DAO^:DT:EX"
|
---|
| 102 | S DIR("A")="Ending Date: "
|
---|
| 103 | D ^DIR
|
---|
| 104 | I $D(DIRUT) D Q
|
---|
| 105 | . S DGEND=0
|
---|
| 106 | S DGEND=Y
|
---|
| 107 | Q
|
---|
| 108 | ;
|
---|
| 109 | BLD(DGBEG,DGEND) ; Build list of PTF records for discharge date range
|
---|
| 110 | N DGX,DGMAX,CNT,DGPIEN,DFN
|
---|
| 111 | ;
|
---|
| 112 | ; Input/Output - See GETDT
|
---|
| 113 | ;
|
---|
| 114 | S DGX=$$FMADD^XLFDT(DGBEG,0,0,0,-1) ; set inital search DT to beginning date minus one second
|
---|
| 115 | S DGMAX=$$FMADD^XLFDT(DGEND,0,23,59,59) ; set search end date to end date plus one day
|
---|
| 116 | ;
|
---|
| 117 | S ^TMP("DGPTFRU",$J,0,"BEGIN")=$H
|
---|
| 118 | F S DGX=$O(^DGPT("ADS",DGX)) Q:'DGX D Q:DGX>DGMAX ; Search PTF Discharge Dates
|
---|
| 119 | . S DGPIEN=0
|
---|
| 120 | . F S DGPIEN=$O(^DGPT("ADS",DGX,DGPIEN)) Q:'DGPIEN D
|
---|
| 121 | . . S DFN=$P($G(^DGPT(DGPIEN,0)),U,1)
|
---|
| 122 | . . Q:'DFN
|
---|
| 123 | . . S ^TMP("DGPTFRU",$J,DFN,DGPIEN)=DGX_U_$$GET1^DIQ(45,DGPIEN,10,"I")_U_+$P($G(^DGPT(DGPIEN,0)),U,11)
|
---|
| 124 | . . S ^TMP("DGPTFRU",$J,0,"CNT")=$G(^TMP("DGPTFRU",$J,0,"CNT"))+1
|
---|
| 125 | S ^TMP("DGPTFRU",$J,0,"END")=$H
|
---|
| 126 | Q
|
---|
| 127 | ;
|
---|
| 128 | CHKMT ; Clean out all PTF records except those meeting the MT=U conditions
|
---|
| 129 | N DFN,DGPIEN,DGIND
|
---|
| 130 | ;
|
---|
| 131 | S DFN=0
|
---|
| 132 | F S DFN=$O(^TMP("DGPTFRU",$J,DFN)) Q:'DFN D
|
---|
| 133 | . S DGPIEN=0
|
---|
| 134 | . F S DGPIEN=$O(^TMP("DGPTFRU",$J,DFN,DGPIEN)) Q:'DGPIEN D
|
---|
| 135 | . . S DGIND=$P($G(^TMP("DGPTFRU",$J,DFN,DGPIEN)),U,2)
|
---|
| 136 | . . ; If the MT INDICATOR of any of the closeout records for the patient is a value other than 'U', then delete all the entries for the patient
|
---|
| 137 | . . I DGIND'="U" D Q
|
---|
| 138 | . . . K ^TMP("DGPTFRU",$J,DFN)
|
---|
| 139 | S ^TMP("DGPTFRU",$J,0,"END")=$H
|
---|
| 140 | Q
|
---|
| 141 | ;
|
---|
| 142 | SRTNAME ; Sort remaining PTF records by patient name and discharge date
|
---|
| 143 | N DFN,DGNAME,DGPIEN,DGPDT
|
---|
| 144 | ;
|
---|
| 145 | S DFN=0
|
---|
| 146 | F S DFN=$O(^TMP("DGPTFRU",$J,DFN)) Q:'DFN D
|
---|
| 147 | . S DGNAME=$$GET1^DIQ(2,DFN,.01)
|
---|
| 148 | . Q:DGNAME']""
|
---|
| 149 | . S ^TMP("DGPTFRU",$J,0,"PATCNT")=$G(^TMP("DGPTFRU",$J,0,"PATCNT"))+1
|
---|
| 150 | . S DGPIEN=0
|
---|
| 151 | . F S DGPIEN=$O(^TMP("DGPTFRU",$J,DFN,DGPIEN)) Q:'DGPIEN D
|
---|
| 152 | . . S ^TMP("DGPTFRUS",$J,DGNAME,DGPIEN)=DFN_U_$P($G(^TMP("DGPTFRU",$J,DFN,DGPIEN)),U,3)
|
---|
| 153 | . . S ^TMP("DGPTFRU",$J,0,"FINAL CNT")=$G(^TMP("DGPTFRU",$J,0,"FINAL CNT"))+1
|
---|
| 154 | S ^TMP("DGPTFRU",$J,0,"END")=$H
|
---|
| 155 | Q
|
---|
| 156 | ;
|
---|
| 157 | MAIL ; send message with report statistics
|
---|
| 158 | N MSG,XMSUB,XMY,XMTEXT,XMDUZ
|
---|
| 159 | ;
|
---|
| 160 | S MSG(1)="Date Range for Report "_$$FMTE^XLFDT(DGBEG,2)_" to "_$$FMTE^XLFDT(DGEND,2)
|
---|
| 161 | S MSG(2)=""
|
---|
| 162 | S MSG(3)="Report Started "_$$HTE^XLFDT(^TMP("DGPTFRU",$J,0,"BEGIN"),2)
|
---|
| 163 | S MSG(4)="Report Finished "_$$HTE^XLFDT(^TMP("DGPTFRU",$J,0,"END"),2)
|
---|
| 164 | S MSG(5)="Total Time for Report "_$$HDIFF^XLFDT(^TMP("DGPTFRU",$J,0,"END"),^TMP("DGPTFRU",$J,0,"BEGIN"),3)
|
---|
| 165 | S MSG(6)=""
|
---|
| 166 | S MSG(7)="PTF Records Scanned "_$J($FN(+$G(^TMP("DGPTFRU",$J,0,"CNT")),","),20)
|
---|
| 167 | S MSG(8)="PTF Records Reported "_$J($FN(+$G(^TMP("DGPTFRU",$J,0,"FINAL CNT")),","),20)
|
---|
| 168 | S MSG(9)="Patient Count "_$J($FN(+$G(^TMP("DGPTFRU",$J,0,"PATCNT")),","),20)
|
---|
| 169 | ;
|
---|
| 170 | S XMSUB="MEANS TEST = 'U' REPORT STATISTICS"
|
---|
| 171 | S XMTEXT="MSG("
|
---|
| 172 | S XMY(DUZ)=""
|
---|
| 173 | S XMDUZ="DG PTF MT=U STATS"
|
---|
| 174 | D ^XMD
|
---|
| 175 | Q
|
---|
| 176 | ;
|
---|
| 177 | PRINT ; Print Report
|
---|
| 178 | N DGNAME,DFN,LAST4,VA,PAGE,DGPIEN,DGDOD,NEWNAME
|
---|
| 179 | ;
|
---|
| 180 | S PAGE=0
|
---|
| 181 | D HDR
|
---|
| 182 | S DGNAME=""
|
---|
| 183 | F S DGNAME=$O(^TMP("DGPTFRUS",$J,DGNAME)) Q:DGNAME']"" D
|
---|
| 184 | . S DGPIEN=0,NEWNAME=1
|
---|
| 185 | . F S DGPIEN=$O(^TMP("DGPTFRUS",$J,DGNAME,DGPIEN)) Q:'DGPIEN D
|
---|
| 186 | . . S DFN=$P($G(^TMP("DGPTFRUS",$J,DGNAME,DGPIEN)),U,1)
|
---|
| 187 | . . S LAST4=$$LAST4(DFN)
|
---|
| 188 | . . S DGDOD=$$DOFD(DFN)
|
---|
| 189 | . . I NEWNAME D
|
---|
| 190 | . . . W !,$E(DGNAME,1,30),LAST4
|
---|
| 191 | . . E W !
|
---|
| 192 | . . W ?35,DGPIEN
|
---|
| 193 | . . W ?48,$$GET1^DIQ(45,DGPIEN,11)
|
---|
| 194 | . . W ?57,$$GET1^DIQ(45,DGPIEN,6)
|
---|
| 195 | . . W ?80,$$GET1^DIQ(45,DGPIEN,7.4)
|
---|
| 196 | . . W:NEWNAME ?97,DGDOD
|
---|
| 197 | . . S NEWNAME=0
|
---|
| 198 | . . I ($Y+5)>IOSL D HDR Q
|
---|
| 199 | S ^TMP("DGPTFRU",$J,0,"END")=$H
|
---|
| 200 | Q
|
---|
| 201 | ;
|
---|
| 202 | LAST4(DFN) ; Print last four of SSN
|
---|
| 203 | N VA
|
---|
| 204 | ;
|
---|
| 205 | D PID^VADPT6
|
---|
| 206 | Q " ("_VA("BID")_")"
|
---|
| 207 | ;
|
---|
| 208 | DOFD(DFN) ; Print Date of Death, if there is one
|
---|
| 209 | N VADM
|
---|
| 210 | ;
|
---|
| 211 | D DEM^VADPT
|
---|
| 212 | Q $P($G(VADM(6)),U,2)
|
---|
| 213 | ;
|
---|
| 214 | HDR ; Report Header
|
---|
| 215 | N SPACE,LINE,TAB,PRNTLN
|
---|
| 216 | ;
|
---|
| 217 | W:PAGE>0 @IOF
|
---|
| 218 | S PAGE=PAGE+1
|
---|
| 219 | ;
|
---|
| 220 | S PRNTLN="PTF Records Transmitted with MT Indicator of U Report"
|
---|
| 221 | S TAB=(IOM-$L(PRNTLN))\2
|
---|
| 222 | W !?TAB,PRNTLN
|
---|
| 223 | S PRNTLN="Date Range: "_$$FMTE^XLFDT(DGBEG)_" thru "_$$FMTE^XLFDT(DGEND)
|
---|
| 224 | S TAB=(IOM-$L(PRNTLN))\2
|
---|
| 225 | W !!?TAB,PRNTLN
|
---|
| 226 | S PRNTLN="Print Date: "_$$FMTE^XLFDT($$NOW^XLFDT)
|
---|
| 227 | S TAB=(IOM-$L(PRNTLN))\2
|
---|
| 228 | W !?TAB,PRNTLN
|
---|
| 229 | S PRNTLN="Page: "_PAGE
|
---|
| 230 | S TAB=(IOM-$L(PRNTLN))\2
|
---|
| 231 | W !?TAB,PRNTLN
|
---|
| 232 | W !!?35,"Record",?80,"Transmission",?97,"Date of"
|
---|
| 233 | W !,"Patient Name",?35,"Number",?48,"Type",?57,"Status",?80,"Date",?97,"Death"
|
---|
| 234 | S $P(LINE,"=",IOM)="" W !,LINE
|
---|
| 235 | Q
|
---|